【发布时间】:2015-03-16 02:24:58
【问题描述】:
我在创建 python 正则表达式字符串以仅检索有效地点时遇到问题。
以下面4行的段落为例:
在纽约分行享受高达 70% 的折扣。
在加拿大享受高达 70% 的折扣。
在伦敦分行无效。
在德国无效。
我只想获取“New York branches”和“Canada”的文本,而不获取“London branches”和“Germany”。
这可行,但它得到了所有位置:
((?<=at ).*(?=\.))|((?<=in ).*(?=\.))
但是为什么这不起作用:
((?<!not )((?<=at ).*(?=\.))|((?<!not )((?<=in ).*(?=\.))
特别是:我想要在单词“at”或“in”之后以及句号之前的所有文本。但是,如果前面有“无效”,我不想要它们。
【问题讨论】:
-
选择的标准不是很清楚。请解释清楚
-
跳过后面的内容并使用类似
^(?!not valid\b).*?(?:at|off).*\.$ -
嗨@thefourtheye,具体来说,我想要'at'或'in'这个词之后以及句号之前的任何内容。但是,如果前面有“无效”,我不想要它们。
-
对 HamZa 正则表达式的微调:regex101.com/r/tR9aI7/2
-
^(?!Not valid\b).*(?:at|in)(.*)\.$
标签: python regex lookbehind