gpt4 book ai didi

c# - 惰性正则表达式无法按预期工作 C#

转载 作者:行者123 更新时间:2023-11-30 15:10:38 24 4
gpt4 key购买 nike

我有以下正则表达式:a?\W*?b我有一个字符串 ,.! ,b
搜索匹配项时,我得到 ,.! ,b,但不仅仅是我期望的 b。这是为什么?如何修改正则表达式以获得我需要的内容?
感谢您的帮助。

最佳答案

惰性量词在这里对您想要的没有帮助。让我们看看发生了什么。

正则表达式引擎从字符串的开头开始。首先尝试匹配 a。它不能,但这没问题,因为 a 是可选的。

然后,有一个惰性 \W*? 所以正则表达式引擎会跳过它但会记住当前位置。

然后它会尝试匹配 b。它不能,所以它回溯并成功地将 ,\W*? 匹配。然后它继续尝试匹配 b(因为惰性量词)。还是不行,又原路返回。这会重复几次,直到正则表达式引擎最终到达 b。现在匹配完成 - 正则表达式引擎宣布成功。

所以正则表达式按规定工作——只是不按预期工作。现在的问题是:您希望正则表达式做什么?

例如,如果您真正想要的是:

单独匹配 b,除非它前面有 a 和一些非单词字符,在这种情况下匹配从 a 的所有内容>b,然后使用

b|a\W*b

关于c# - 惰性正则表达式无法按预期工作 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3082912/

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