向后查找字符串或字符的开头

lookbehind for start of string or a character

命令

re.compile(ur"(?<=,| |^)(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)

抛出一个

sre_constants.error: look-behind requires fixed-width pattern

我的程序出现错误,但 regex101 显示一切正常。

我在这里要做的是匹配地址中的地标(每个地址都在一个单独的字符串中),例如:

lookbehind 是为了避免匹配其中包含 opp 的单词(如字符串 3)。

为什么会抛出该错误?除了我正在寻找的东西,还有其他选择吗?

re.compile(ur"(?:^|(?<=[, ]))(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)

您可以使用 []| 组合 3 条件。查看演示。

https://regex101.com/r/vA8cB3/2#python

在下面的正则表达式中使用 re.findall,因为如果存在任何捕获组,re.findall 必须 return 捕获组内的内容。

re.compile(ur"(?m)(?:[, ]|^)((?:next to|near|beside|opp).+?)(?:,|$)", re.IGNORECASE)