gpt4 book ai didi

python - 两个正则表达式之间的区别 : [abc]+ and ([abc])+

转载 作者:太空狗 更新时间:2023-10-29 21:23:46 27 4
gpt4 key购买 nike

In [29]: re.findall("([abc])+","abc")
Out[29]: ['c']

In [30]: re.findall("[abc]+","abc")
Out[30]: ['abc']

被分组的人搞糊涂了。它有何不同?

最佳答案

这里有两点需要说明:量化组的行为,以及findall()方法的设计。

在您的第一个示例中,[abc] 匹配在第 1 组中捕获的 a。然后它匹配 b 并在组 #1 中捕获它,覆盖 a。然后再次使用 c,这就是比赛结束时留在第 1 组中的内容。

但它确实匹配整个字符串。如果您使用的是 search()finditer(),您将能够查看 MatchObject 并看到 group(0) 包含abcgroup(1) 包含 c。但是 findall() 返回字符串,而不是 MatchObjects。如果没有组,则返回整体匹配列表;如果有组,则列表包含所有捕获,但不是整体匹配。

所以您的两个正则表达式都匹配整个字符串,但第一个正则表达式还单独捕获和丢弃每个字符(这有点毫无意义)。只是 findall() 的意外行为让您看起来得到了不同的结果。

关于python - 两个正则表达式之间的区别 : [abc]+ and ([abc])+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677905/

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