【发布时间】:2020-10-11 00:01:40
【问题描述】:
我有以下代码在一个非捕获组中使用多个捕获组:
>>> regex = r'(?:a ([ac]+)|b ([bd]+))'
>>> re.match(regex, 'a caca').groups()
('caca', None)
>>> re.match(regex, 'b bdbd').groups()
(None, 'bdbd')
如何更改代码以输出('caca') 或('bdbd')?
【问题讨论】:
-
使用 PyPi 正则表达式,您可能会得到
('caca',)和('bdbd',) -
在什么条件下?无法使用 PyPi 正则表达式 v2020.6.8 生成。
-
r'(?|a ([ac]+)|b ([bd]+))' -
我发布了an answer below,因为您似乎对此感兴趣。我真的相信 Python 应该内置 regex 模块,它比
re在复杂的模式匹配或处理大文本方面更快、更稳定、更强大,它必须是我的默认安装包的一部分意见。
标签: python regex capturing-group