向后查找字符串或字符的开头
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 显示一切正常。
我在这里要做的是匹配地址中的地标(每个地址都在一个单独的字符串中),例如:
- "Opp foobar, foocity" --> 必须匹配 "Opp foobar"
- "Fooplace, near barplace, barcity" --> 必须匹配 "near barplace"
- "Fooplace, Shoppers Stop, foocity"--> 不能匹配任何东西
- "Fooplace, opp barplace"-->必须匹配"opp barplace"
lookbehind 是为了避免匹配其中包含 opp
的单词(如字符串 3)。
为什么会抛出该错误?除了我正在寻找的东西,还有其他选择吗?
re.compile(ur"(?:^|(?<=[, ]))(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)
您可以使用 []
和 |
组合 3
条件。查看演示。
在下面的正则表达式中使用 re.findall
,因为如果存在任何捕获组,re.findall
必须 return 捕获组内的内容。
re.compile(ur"(?m)(?:[, ]|^)((?:next to|near|beside|opp).+?)(?:,|$)", re.IGNORECASE)
命令
re.compile(ur"(?<=,| |^)(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)
抛出一个
sre_constants.error: look-behind requires fixed-width pattern
我的程序出现错误,但 regex101 显示一切正常。
我在这里要做的是匹配地址中的地标(每个地址都在一个单独的字符串中),例如:
- "Opp foobar, foocity" --> 必须匹配 "Opp foobar"
- "Fooplace, near barplace, barcity" --> 必须匹配 "near barplace"
- "Fooplace, Shoppers Stop, foocity"--> 不能匹配任何东西
- "Fooplace, opp barplace"-->必须匹配"opp barplace"
lookbehind 是为了避免匹配其中包含 opp
的单词(如字符串 3)。
为什么会抛出该错误?除了我正在寻找的东西,还有其他选择吗?
re.compile(ur"(?:^|(?<=[, ]))(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)
您可以使用 []
和 |
组合 3
条件。查看演示。
在下面的正则表达式中使用 re.findall
,因为如果存在任何捕获组,re.findall
必须 return 捕获组内的内容。
re.compile(ur"(?m)(?:[, ]|^)((?:next to|near|beside|opp).+?)(?:,|$)", re.IGNORECASE)