用特殊字符替换C#中的所有函数

SOF*_*ser 2 c# regex

我打电话的时候

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

And*_*ber 5

[]在RegEx中有特殊意义; 它允许您为匹配指定字符/字符类的"列表".你需要逃避它,使它像你期望的那样工作:

"\\[Replace\\]"
Run Code Online (Sandbox Code Playgroud)

这里使用双反斜杠,因为第一个是逃避C#的斜杠,然后第二个是为正则表达式转义它.

这是你当前的正则表达式基本上做的:匹配这些中的任何字符: R, e, p, l, a, c, e

这就是为什么你NewText在结果文本开头的方括号之间看到你重复7次,背对背的原因.然后它也只是简单地替换那7个字符的任何出现NewText.

逃避[]删除特殊含义,因此您可以按照字面意思进行匹配,并准确匹配您想要匹配的内容.