Python中正则表达式的group()和group(0)是不是一回事呢?

测试了一下,发现两者输出都是相同的,谢谢
Python中正则表达式的group()和group(0)是不是一回事呢?

4 回复

print(re.search(’(\d)\d\d’, ‘123’).group())
print(re.search(’(\d)\d\d’, ‘123’).group(0))
print(re.search(’(\d)\d\d’, ‘123’).group(1))


group()group(0) 完全是一回事,它们都返回整个正则表达式匹配到的完整字符串。

举个例子就清楚了:

import re

pattern = r'(\d{3})-(\d{3})-(\d{4})'  # 匹配电话号码
text = "我的电话是123-456-7890"
match = re.search(pattern, text)

if match:
    print(f"group(): {match.group()}")      # 输出: 123-456-7890
    print(f"group(0): {match.group(0)}")    # 输出: 123-456-7890
    print(f"group(1): {match.group(1)}")    # 输出: 123
    print(f"group(2): {match.group(2)}")    # 输出: 456
    print(f"group(3): {match.group(3)}")    # 输出: 7890

简单说,group()group(0) 返回整个匹配,而 group(1)group(2) 等返回括号捕获的分组。

所以用哪个看个人习惯,我一般直接写 group() 省事。

without arguments,group1 defaults to zero ( the whole match is retrun )。
就在官方文档里

回到顶部