【发布时间】:2025-12-11 01:55:02
【问题描述】:
我正在使用正则表达式来查找字符串“我的车”并在它之前检测到最多四个单词。我的参考文字是:
my house is painted white, my car is red.
A horse is galloping very fast in the road, I drive my car slowly.
如果我使用正则表达式:
re.finditer(r'(?:\w+[ \t,]+){0,4}my car',txt,re.IGNORECASE|re.MULTILINE)
我得到了预期的结果。例如:房子被漆成白色,我的车
如果我使用正则表达式:
re.finditer(r'(?:\w+\b){0,4}my car',txt,re.IGNORECASE|re.MULTILINE)
我只得到:“我的车”和“我的车” 也就是说,在它之前我最多没有四个字。 为什么我不能使用 \b 来匹配组 {0,4} 中的单词?
【问题讨论】:
-
\b是零宽度断言,它不会匹配你的话后面的空格/逗号等。 -
单词边界的正则表达式是
(?:(?:^|(?<=[^a-zA-Z0-9_]))(?=[a-zA-Z0-9_])|(?<=[a-zA-Z0-9_])(?:$|(?=[^a-zA-Z0-9_]))),也许你能发现你犯的错误。
标签: python regex python-3.x