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

时间:2014-09-10 02:40:39

标签: python regex

在这篇文章中

Regular expression negative lookbehind of non-fixed length

回答说,匹配事物只是为了忽略它们。我想使用该示例,但我想只打印未被忽略的匹配项。

2 个答案:

答案 0 :(得分:2)

如果您想确保foo后面跟bar,如果您只对bar感兴趣,那么您可以使用后置断言,就像这样< / p>

re.findall("(?<=foo )bar", "foo bar")
# ['bar']

而不是bar,如果您要匹配foo后跟的任何内容,您可以

re.findall("(?<=foo ).*", "foo google")
# ['google']

答案 1 :(得分:1)

这将在列表中留下空白项目。但是对于我认为你要问的内容,你可以在上下文中使用交替运算符放置你想要排除在左边的内容,(说扔掉它,它的垃圾)并放置什么你想在右侧的一个捕获组中匹配,只打印捕获的匹配。

>>> re.findall(r'foo|(bar)', 'foo bar foo bar')
['', 'bar', '', 'bar']