gpt4 book ai didi

python - 理解 Python 中的 (\D\d)+ 正则表达式模式

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

我花了一些时间试图理解 Python 3 中的正则表达式术语,但我无法弄清楚 (\D\d)+ 在这里是如何工作的。

我知道 \D 代表非数字字符,\d 代表数字字符,还有加号 + 代表前面的表达式的一次或多次重复。但是当我尝试下面的代码时,我根本无法理解结果。

输入:

import re
text = "a1 b2 c3 d4e5f6"
regex = re.findall(r'(\D\d)+',text)
print(regex)

输出:

['a1', 'b2', 'c3', 'f6']

既然正则表达式包含一个加号,它不应该也输出 d4e5f6 因为它们是非数字和数字字符的序列吗?

最佳答案

您不是直接用 + 重复 \D\d 子模式,您是在重复一个捕获组(用括号表示) 包含该子模式。最终的匹配确实是文本 d4e5f6,但它是作为捕获组的三个实例进行的,每个实例都会覆盖最后一个。在存在捕获组的情况下,Python 的 re.findall() 的行为是它返回 THEM(作为一个元组,如果有多个)而不是整体匹配。

Python 3.x 中有一个较新的实验性 regex 模块,它能够为单个捕获组返回多个匹配项,尽管我不确定它如何与 交互查找所有()。您还可以将表达式写成 (?:\D\d)+ - (?: 开始一个非捕获组,所以 findall() 将为您提供您所期望的整个匹配项。

关于python - 理解 Python 中的 (\D\d)+ 正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079552/

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