回答这个问题,我坚持这种情况.在我的正则表达式中使用不情愿的匹配会带来这个结果
string s = Regex.Replace(".A.", "\\w*?", "B");
Run Code Online (Sandbox Code Playgroud)
B.BAB.B
为什么它不匹配并取代A?
因为\\w*?匹配尽可能少\w,包括其中的0个.
既然你\w*不是\w+,正则表达式匹配0或更多\w.
由于你有一个额外?的\w*,这个正则表达式的最小可能匹配是0长度字符串''.
由于? 部队正则表达式匹配尽可能小的匹配越好,它只是不断与零长度字符串.它不能匹配单个字符,A因为这将是一个比最短的匹配更长的匹配.
因此,所有0长度的字符串.A.(其中:''.''A''.'',每个可能的0长度字符串被标记为'')将被替换为'B',从而为您提供'BAB'.
如果要禁用此行为并至少替换一个\w,则可以使用正则表达式\w+?.但是,通过与以前相同的推理,这种?力量只能替换\w长度为1,所以你不妨使用正则表达式\w.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |