正则表达式匹配反斜线星号

7

我无法解决这个问题,它匹配一个星号:

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

我需要它匹配\*,我已经尝试过:

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

无法解决,感谢任何帮助!
3个回答

11

你很接近了,\\\\\\* 就可以了。

最好使用verbatim字符串,这样会更容易:

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

\\匹配一个字面上的反斜杠(在普通字符串中为\\\\),\*匹配一个星号(在普通字符串中为\\*)。


4
请记住有两个“级别”的转义。
首先,您正在为C#编译器转义字符串,同时也在为正则表达式引擎转义字符串。
如果您想要字面匹配"\*",那么您需要为正则表达式引擎转义这两个字符,否则它们的含义就不同了。我们用反斜杠进行转义,这样您将得到"\\\*"
然后,我们必须转义反斜杠,以便将其作为文本字符串写入。这意味着用两个反斜杠替换每个反斜杠:"\\\\\\*"
除了最后一部分,我们可以使用"verbatim string",其中不应用任何转义。在这种情况下,您只需要第一个转义的结果:@"\\\*"

@Tim:这匹配零个或多个反斜杠? - porges

0

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

这个可以正常工作:

string Text = "asdf*sadf";

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

Console.WriteLine(Text);

输出:

asdf[MULTIPLY]sadf

如果要匹配 \*,则需要使用模式 "\\\\\\*"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接