【发布时间】:2021-01-25 03:51:42
【问题描述】:
我试图了解regex 在连续使用\d 和\w 来匹配句子中的单词和数字时的行为。我搜索了类似的问题,但找不到合适的匹配项(如果有重复,请告诉我)。
# Example sentence
"Adam has 100 friends. Bill has 23 friends. Cindy has 5 friends."
当我使用正则表达式 [A-Za-z]+\s\w+\s\d+\w 时,它会返回匹配项:
Adam has 100Bill has 23
但不适合
Cindy has 5
因为贪婪搜索的数字 (\d+) 后面没有任何单词字符 (\w),所以我本来预计根本没有匹配项;它们后面跟着一个空格。我认为,不知何故,\w 在第一次出现任何数字之后匹配数字。我以为\d+ 会用尽搜索中的数字。你能帮我理解这里发生了什么吗?
谢谢
【问题讨论】:
-
您能说明一下您期望得到什么样的答案吗?解释模式是如何工作的?那就看regex101.com/r/LWD5hM/1/debugger
-
你好维克托。我最初并不理解这种行为,因为我不知道回溯以通过贪婪匹配来容纳更多的查询模式。下面的答案澄清了这一点。感谢您的链接!
标签: regex