无法解决这个问题,这与一颗星相匹配:
// Escaped multiply
Text = Text.replace(new RegExp("\\*", "g"), '[MULTIPLY]');
但我需要它来匹配\*
,我试过了:
\\*
\\\\*
\\\\\*
无法解决问题,谢谢你的帮助!
答案 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
要匹配\*
,您可以使用模式"\\\\\\*"
。