我打电话的时候
Regex.Replace(
"My [Replace] text and another [Replace]",
"[Replace]",
"NewText",
RegexOptions.IgnoreCase)
Run Code Online (Sandbox Code Playgroud)
这给我以下结果我不知道为什么会给出意想不到的结果.
我的[NewTextNewTextNewTextNewTextNewTextNewTextNewText] tNewTextxt NewTextnd NewTextnothNewTextNewText [NewTextNewTextNewTextNewTextNewTextNewTextNewText]
如何更改正则表达式,因此结果可能是这样的.
我的NewText文本和另一个NewText
[]在RegEx中有特殊意义; 它允许您为匹配指定字符/字符类的"列表".你需要逃避它,使它像你期望的那样工作:
"\\[Replace\\]"
Run Code Online (Sandbox Code Playgroud)
这里使用双反斜杠,因为第一个是逃避C#的斜杠,然后第二个是为正则表达式转义它.
这是你当前的正则表达式基本上做的:匹配这些中的任何字符: R, e, p, l, a, c, e
这就是为什么你NewText在结果文本开头的方括号之间看到你重复7次,背对背的原因.然后它也只是简单地替换那7个字符的任何出现NewText.
逃避[]删除特殊含义,因此您可以按照字面意思进行匹配,并准确匹配您想要匹配的内容.