我是一个做C#的perl程序员.面对与零或多个断言有关的Regex.Replace的奇怪问题,*.
假设我想用一个字母替换零个或多个字母.在perl中,我可以这样做:
my $s = "A";
$s =~ s/\w*/B/;
print $s;
$s now = "B"
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试在C#中做同样的事情,就像这样:
string s = Regex.Replace("A", @"\w*", "B");
s now = "BB"
Run Code Online (Sandbox Code Playgroud)
文档确实说"*字符在替换模式中不被识别为元字符"
为什么?如果你想要一些你的正则表达式在一些字符串上留下可能不存在的字符串(如末尾的".*?"),是否有任何解决方法?
(这是一个愚蠢的例子,但你明白了)
回答这个问题,我坚持这种情况.在我的正则表达式中使用不情愿的匹配会带来这个结果
string s = Regex.Replace(".A.", "\\w*?", "B");
Run Code Online (Sandbox Code Playgroud)
B.BAB.B
为什么它不匹配并取代A?