gpt4 book ai didi

c# - 没有行开始和结束终止符的 Regex.Replace 有一些非常奇怪的效果......这里发生了什么?

转载 作者:可可西里 更新时间:2023-11-01 08:55:21 24 4
gpt4 key购买 nike

在回答这个问题时C# Regex Replace and *有人提出问题存在的原因。播放时我产生了以下代码:

    string s = Regex.Replace(".A.", "\w*", "B");
Console.Write(s);

这有输出:B.BB.B

我知道 0 长度字符串在 . 字符前后匹配,但为什么 A 被 2 Bs 替换。

我可以将 B.BBB.B 理解为替换 AB.B.B 任一侧的零长度字符串但实际结果让我感到困惑 - 任何帮助表示赞赏。

或者正如 AakashM 所说:

为什么 Regex.Matches("A", "\w*").Count 等于 2,而不是 13 ?

最佳答案

\w后面有一个星号

它的意思是“或多个”,所以这意味着:

  • 第一个符号是一个点,它不是\w 所以这里有零\w,替换为 B
  • 接下来我们有一个点本身,它是不可替换的
  • A 被 B 取代
  • 下一个点前零\w,替换为 B
  • 点,不可替换
  • 行尾,零\w 所以再次用 B 替换。

表达式 \w{0,} 会有同样的效果。

如果您想避免它,请使用“加号”,这意味着“至少一个”:\w+

关于c# - 没有行开始和结束终止符的 Regex.Replace 有一些非常奇怪的效果......这里发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com