gpt4 book ai didi

python - 正则表达式:将捕获组与 OR 条件相结合

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:06 25 4
gpt4 key购买 nike

假设我有一个字符串:

s = "id_john, num847, id_000, num___"

我知道如何使用 | 检索两种模式之一:

re.findall("id_[a-z]+|num[0-9]+", s)
#### ['id_john', 'num847'] # OK

我知道如何只捕获带有括号的匹配项的一部分:

re.findall("id_([a-z]+)", s)
#### ['john']

但是当我尝试结合这两个功能时我失败了,这是我的期望的输出:

#### ['john', '847']

感谢您的帮助..(我使用 python)

最佳答案

不需要前瞻或复杂的模式。

考虑一下:

>>> re.findall('id_([a-z]+)|num([0-9]+)', s)
[('john', ''), ('', '847')]

当第一个模式匹配时,第一组将包含匹配项,第二组将为空。当第二个模式匹配时,第一组为空,第二组包含匹配项。

由于两个组中的一个总是空的,加入它们不会有什么坏处。

>>> [a+b for a,b in re.findall('id_([a-z]+)|num([0-9]+)', s)]
['john', '847']

关于python - 正则表达式:将捕获组与 OR 条件相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com