gpt4 book ai didi

python 正则表达式搜索 findall 捕获组

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:48 28 4
gpt4 key购买 nike

我只想获取“66664324”,即“)”和“-”之间的内容。为什么 search 方法本身会得到“)”和“-”。

a="(021)66664324-01"
b1=re.findall('\)(.*)-',a)
>['66664324']

b2=re.search('\)(.*)-',a).group()
>')66664324-'

两个代码片段之间有什么区别。

最佳答案

尝试在 re.search 中打印 group(1) 而不是 group()。其中 group() 打印整个匹配项,但 group(1) 仅打印捕获的组 1(打印组索引 1 中存在的字符)。

>>> a="(021)66664324-01"
>>> import re
>>> b2=re.search('\)(.*)-',a).group(1)
>>> b2
'66664324'
>>> b2=re.search('\)(.*)-',a).group()
>>> b2
')66664324-'

但是 re.findall 会优先考虑组而不是匹配项,并且它会以列表形式返回结果,但 search 不会。这样 b1=re.findall('\)(.*)-',a) 就会为您提供所需的输出。如果存在组,则 re.findall 方法将仅打印不匹配的组。如果不存在组,则仅打印匹配项。

>>> b1=re.findall('\)(.*)-',a)
>>> b1
['66664324']
>>> b1=re.findall('\).*-',a)
>>> b1
[')66664324-']

关于python 正则表达式搜索 findall 捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565056/

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