python regex句子的结尾或开头

时间:2018-10-31 16:12:50

标签: python regex

我有如下代码。我想查找出现“ eve”一词的情况

我的条件是

  1. 在“ eve”之后或之前不应有任何数字或字母

  2. 在“夏娃”之前可能没有空格

  3. '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)

2 个答案:

答案 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)

条件是多余的,但可以翻译成正则表达式,并且可以一起使用,

  1. 在前面添加(?<![a-zA-Z\d]),在后面添加(?![a-zA-Z\d])
  2. 在前面添加(?:^|(?<=\s))
  3. 在之后添加(?:$|(?=[^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)