gpt4 book ai didi

Python 3 正则表达式单词边界不清楚

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:24 26 4
gpt4 key购买 nike

我正在使用正则表达式查找字符串“my car”并检测其前面的最多四个词。我的引用文本是:

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是一个零宽度断言 word boundary匹配字符串开头和字符字符之间、非字符字符和字符字符之间、字符字符和非字符字符之间以及字符字符和字符串结尾之间的位置 . 它不会消耗文本

(?:\w+\b){0,4}只匹配一个空字符串,因为在 my car 之前没有 1+ 个单词 chasrs 后跟单词边界.

相反,您可能想要匹配 1 个以上的非单词字符,这些字符将有效地模仿单词边界:

(?:\w+\W+){0,4}my car\b

参见 regex demo

关于Python 3 正则表达式单词边界不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39477394/

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