在这篇文章中
非定长的正则表达式负查找
回答者说,匹配事物却忽略了它们。我想使用这个例子,但我只想打印不被忽略的匹配项。
如果你想确保foo
后面应该跟bar
,如果你只对bar
感兴趣,那么你可以使用look-behind断言,比如这个
re.findall("(?<=foo )bar", "foo bar")
# ['bar']
如果你想匹配foo
后面的任何东西,你可以做,而不是bar
re.findall("(?<=foo ).*", "foo google")
# ['google']
这将在列表中留下空项目。但对于我假设你在问的问题,你可以在上下文中使用交替运算符,将你想排除的内容放在左边(说扔掉,这是垃圾),并将你想匹配的内容放置在右边的捕获组中,只打印捕获的匹配项。
>>> re.findall(r'foo|(bar)', 'foo bar foo bar')
['', 'bar', '', 'bar']