我在创建python正则表达式字符串时只能检索有效的位置。
以4行示例以下段落:
在纽约分行享受高达70%的折扣。
在加拿大享受高达70%的折扣。
在伦敦分行无效。
在德国无效。
我只想获得“纽约分支”和“加拿大”的文本,而不是获得“伦敦分支机构”和“德国”。
这有效,但它有所有位置:
((?<=at ).*(?=\.))|((?<=in ).*(?=\.))
但为什么这不起作用:
((?<!not )((?<=at ).*(?=\.))|((?<!not )((?<=in ).*(?=\.))
具体来说:我希望所有文字都在“at”或“in”之后,以及完整停止之前。但是,如果有一个“无效”的前途,我不想要它们。
答案 0 :(得分:2)
我认为上面的hwnd提供的答案是最好的方法
^(?!Not valid\b).*(?:at|in)(.*)\.$
但要回答你的问题,你要完成的是这个
(?<=(?<!not valid )(?:at|in) ).*(?=\.)