相关疑难解决方法(0)

如何在.NET中的字符串中仅使用正则表达式搜索/替换第一个匹配项?

似乎.NET Regex.Replace方法自动替换所有匹配的事件.我可以提供一个MatchEvaluator委托,它在第一次替换后返回匹配的字符串,不会发生任何变化,但这对我来说效率非常低.

第一次更换后停止的最有效方法是什么?

.net regex

26
推荐指数
4
解决办法
2万
查看次数

如何从字符串中仅删除某些子字符串?

使用C#,我有一个字符串,它是一个包含多个查询的SQL脚本.我想删除用单引号括起来的字符串部分.我可以这样使用Regex.Replace:

string test = "Only 'together' can we turn him to the 'dark side' of the Force";
test = Regex.Replace(test, "'[^']*'", string.Empty);
Run Code Online (Sandbox Code Playgroud)

结果:"我们只能把他变成原力"

我想要做的是删除引号之间的子串EXCEPT包含特定子串的子串.例如,使用上面的字符串,我想删除引用的子字符串,除了那些包含"dark"的子字符串,这样生成的字符串是:

结果:"我们只能把他变成原力的'黑暗面'"

如何使用Regex.Replace或者通过其他技术来实现?目前,我想要的是涉及使用的解决方案Substring(),IndexOf()以及Contains().

注意:我不在乎是否删除了"黑暗面"周围的单引号,结果也可能是:"我们只能将他转向原力的黑暗面." 我这样说是因为使用的解决方案Split()会删除所有单引号.

编辑:我没有尚未使用的解决方案Substring(),IndexOf()等等.通过"工作,"我的意思是我想在我的头上怎么可以做到这一点.我没有代码,这就是为什么我还没有发布任何代码.谢谢.

编辑:下面的VKS解决方案有效.我没有逃脱\ b第一次尝试,这就是它失败的原因.此外,除非我在整个字符串中包含单引号,否则它不起作用.

test = Regex.Replace(test, "'(?![^']*\\bdark\\b)[^']*'", string.Empty);
Run Code Online (Sandbox Code Playgroud)

c# regex string

18
推荐指数
2
解决办法
3359
查看次数

标签 统计

regex ×2

.net ×1

c# ×1

string ×1