gpt4 book ai didi

python re.split() 可疑结果

转载 作者:行者123 更新时间:2023-12-01 03:18:19 29 4
gpt4 key购买 nike

我是 python 初学者。我对 re.split() 的输出有疑问

text='alpha, beta,,,gamma dela'
In [9]: re.split('(,)+',text)
Out[9]: ['alpha', ',', ' beta', ',', 'gamma dela']

In [11]: re.split('(,+)',text)
Out[11]: ['alpha', ',', ' beta', ',,,', 'gamma dela']

In [7]: re.split('[,]+',text)
Out[7]: ['alpha', ' beta', 'gamma dela']

为什么这些输出不同?请帮助我,非常感谢!

最佳答案

正如 documentation 中指定的那样re.split:

re.split(pattern, string, maxsplit=0, flags=0)

Split string by the occurrences of pattern. If capturing parentheses are used in pattern, then the text of all groups in the pattern are also returned as part of the resulting list. If maxsplit is nonzero, at most maxsplit splits occur, and the remainder of the string is returned as the final element of the list.

捕获组通常使用不包含 ?: 或lookahead/lookbehind 标记的括号 ((..)) 进行描述。所以前两个正则表达式有捕获组:

  (,)+
# ^ ^
(,+)
# ^ ^

在第一种情况下,捕获组是单个逗号。这意味着使用了最后一次捕获(因此是一个逗号)。在第二种情况((,+))中,它可以捕获多个逗号(正则表达式旨在捕获尽可能多的逗号,因此它在这里捕获所有逗号)。

在最后一种情况下,没有捕获组,因此这意味着分割已完成,并且与模式匹配的文本被完全忽略。

关于python re.split() 可疑结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252742/

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