正则表达式匹配反斜杠明星

时间:2011-08-01 10:02:20

标签: regex c#-4.0

无法解决这个问题,这与一颗星相匹配:

// Escaped multiply
Text = Text.replace(new RegExp("\\*", "g"), '[MULTIPLY]');

但我需要它来匹配\*,我试过了:

\\*
\\\\*
\\\\\*

无法解决问题,谢谢你的帮助!

3 个答案:

答案 0 :(得分:11)

你很亲密,\\\\\\*会做到的。

更好地使用逐字字符串,这样可以更容易:

RegExp(@"\\\*", "g")

\\匹配文字反斜杠(普通字符串中的\\\\),\*匹配星号(普通字符串中的\\*)。

答案 1 :(得分:4)

请记住,逃脱有两个“级别”。

首先,您正在为C#编译器转义字符串,并且还在为正则表达式引擎转义字符串。

如果你想按字面意思匹配"\*",那么你需要为正则表达式引擎转义这两个字符,否则它们意味着不同的东西。我们使用反斜杠来逃避这些,因此您将拥有"\\\*"

然后,我们必须转义反斜杠才能将它们写成文字字符串。这意味着用两个反斜杠替换每个反斜杠:"\\\\\\*"

我们可以使用“逐字字符串”代替最后一部分,而不应用任何转义。在这种情况下,您只需要第一次转义的结果:@"\\\*"

答案 2 :(得分:0)

你的语法完全错误。它看起来更像是Javascript而不是C#。

这很好用:

string Text = "asdf*sadf";

Text = Regex.Replace(Text, "\\*", "[MULTIPLY]");

Console.WriteLine(Text);

输出:

asdf[MULTIPLY]sadf

要匹配\*,您可以使用模式"\\\\\\*"