gpt4 book ai didi

python - python 如何处理像 r'([abc])+' 这样的正则表达式

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

在 python 的文档中,我看到了一个例子:

m = re.match("([abc])+", "abc")
m.groups() # ('c',)

这是怎么发生的?我认为子组应该是“a”。

最佳答案

我认为该行为是未指定的。当您在重复运算符中使用捕获组时,它通常会捕获最后一个匹配项。但是,Python Issue 7132 中的讨论表明情况并非总是如此:

Yes, but this is necessary for full consistency of the group indexes. The current return value is clearly inconsistant (generally it returns the last occurence of the capturing group, but I've discovered that this is not always the case, because of matches that are returned after backtracking...)

但是,很容易修改您的示例以返回每个字符:

In [7]: m = re.match("([abc]+)", "abc") # a slightly different regex

In [8]: list(m.groups()[0])
Out[8]: ['a', 'b', 'c']

在这里,整个序列被捕获为一个组,然后拆分。

关于python - python 如何处理像 r'([abc])+' 这样的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951181/

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