这可能是一个非常简单的问题,已经回答但无法在线找到解决方案。
我正在尝试以下代码来搜索有效的单词foo
:
import re
haystack = 'bar foo, foo is a foobar'
needle = 'foo'
[m.start() for m in re.finditer(r'\b{}\b'.format(re.escape(needle)), haystack)]
# [4, 9]
在执行以下操作时,搜索foo,
(注意逗号)并不能达到我的期望:
import re
haystack = 'bar foo, foo is a foobar'
needle = 'foo,'
[m.start() for m in re.finditer(r'\b{}\b'.format(re.escape(needle)), haystack)]
# []
怎么回事,如何搜索带有特殊字符的字符串(通常,不是上面报告的特定情况)?
谢谢
答案 0 :(得分:-1)
您正在foo,
中搜索单词边界(\b
等同于(^\w|\w$|\W\w|\w\W)
)。但是,', '
不是单词边界,因为,
不是单词(\w
)。 Here is the detailed explanation of your regular expression。
您可以使用例如:
r'\bfoo,(?!\w)'
如果下一个字符不是单词\w
,则匹配该字符,并使用否定的(?! )