正则表达式问题替换简单字符串

时间:2013-08-09 08:48:20

标签: c# .net regex

我正在使用Regex替换如下:

string test = "[abc] Sends the employee mail. [twist] Sends the employee mail.";
test = Regex.Replace(test, "[twist]", "hello");

结果如下:

test = "[abc] Sendhello hellohe employee mahellol. [hellohellohellohellohello] Sendhello hellohe employee mahellol."

它应该用hello替换[twist]字符串。

这里出了什么问题。

3 个答案:

答案 0 :(得分:3)

您必须越过括号(至少是开头的)。变化

"[twist]"

"\\[twist\\]"

或使用a verbatim literal来避免双\

@"\[twist\]"

[twist]被解释为t,w,i,s或t中的任何一个,其中任何一个都被hello字符串替换。

答案 1 :(得分:0)

Regex.Replace(测试, “\ [捻\]”, “你好”)

答案 2 :(得分:0)

作为其他有用的信息,您可以将[转义为[[],所以

"[[]twist]"

或者你可以

"\\x5btwist]"

其中\x5b[的ascii代码。请注意,您需要转义\ \x5b,因为否则"\x5b" == "["(C#使字符串替换)。通过转义而不是正则表达式“接收”\x5b并将其视为[。显然,您可以使用@

禁用转义序列扩展
@"\x5btwist]"