如何Python re.findall打印只捕获匹配



在这篇文章中

非定长的正则表达式负查找

回答者说,匹配事物却忽略了它们。我想使用这个例子,但我只想打印不被忽略的匹配项。

如果你想确保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']

最新更新