我有如下代码。我想查找出现“ eve”一词的情况
我的条件是
在“ eve”之后或之前不应有任何数字或字母
在“夏娃”之前可能没有空格
'eve'之后可能没有符号
下面的代码找到['eve?', 'eve ']
,但是找不到最后一个eve
。我应该如何更改代码
import re
your_string = "eve? is a rule, but not evening and not never. eve eve"
re.findall(r'\beve[^a-zA-Z\d:]', your_string)
我尝试了以下代码
我尝试在“前夕”之后编码的地方可能是\b
或[^a-zA-Z\d:]
但这没用
import re
your_string = "eve? is a rule, but not evening and not never. eve eve"
re.findall(r'\beve(\b|[^a-zA-Z\d:])', your_string)
答案 0 :(得分:3)
在两侧使用单词边界:
import re
your_string = "eve? is a rule, but not evening and not never. eve eve"
print re.findall(r'\beve\b', your_string)
输出:
['eve', 'eve', 'eve']
答案 1 :(得分:0)
条件是多余的,但可以翻译成正则表达式,并且可以一起使用,
(?<![a-zA-Z\d])
,在后面添加(?![a-zA-Z\d])
(?:^|(?<=\s))
(?:$|(?=[^a-zA-Z\d]))
已更新代码
import re
your_string = "eve? is a rule, but not evening and not never. eve eve"
re.findall(r'(?<![a-zA-Z\d])(?:^|(?<=\s))eve(?![a-zA-Z\d])(?:$|(?=[^a-zA-Z\d]))', your_string)