我想找一个短语,跟随它后面的几个单词,但如果我找到另一个特定的短语,请提前停止.
例如,我想在“前往”之后匹配最多三个单词,但如果我遇到“试试”,则停止匹配过程.因此,例如“前往月神公园”将导致“月神公园”; “前往首都秘鲁”将导致“首都”和“月亮尝试一些芝士蛋糕”将导致“月亮”.
可以使用单个简单的正则表达式(最好是在Python中)吗?我已经尝试了所有我能想到的组合,但是失败了:).
解决方法
只要没有后续尝试((?!to try)),这个单词最多可匹配3个({1,3})单词:
import re infile = open("input","r") for line in infile: m = re.match("going to the ((?:\w+\s*(?!to try)){1,3})",line) if m: print m.group(1).rstrip()
产量
luna park capital city of moon