1

我正在使用正则表达式替换如下:

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] 字符串。

这里出了什么问题。

4

3 回答 3

3

您必须转义括号(至少是开头的括号)。改变

"[twist]"

"\\[twist\\]"

或者,使用逐字文字来避免使用 double \

@"\[twist\]"

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

于 2013-08-09T08:49:25.637 回答
0

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

"[[]twist]"

或者你可以

"\\x5btwist]"

\x5b的ascii代码在哪里[。请注意,您需要转义\of \x5b,否则"\x5b" == "["(C# 会替换字符串)。通过转义它,它是“接收”\x5b并将其视为[. 显然,您可以通过使用禁用转义序列扩展@

@"\x5btwist]"
于 2013-08-09T09:15:04.783 回答
0

Regex.Replace(test,"\[twist\]","hello")

于 2013-08-09T08:58:43.140 回答