我正在使用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]字符串。
这里出了什么问题。
答案 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]"