gpt4 book ai didi

python - re.groups() 什么也不返回

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:32 25 4
gpt4 key购买 nike

我是正则表达式领域的新手!我正在尝试了解码的功能。这是我的字符串:

 ** server can\'t find mywebdomain.com: NXDOMAIN

这是我的正则表达式:

match = re.match('[*]{2}\s+server.*NXDOMAIN')

这是我在调试器中看到的匹配值:

match="** server can't find testweb.com: NXDOMA>

所以我试图在这个正则表达式上查看组。

match.groups()

但是当我期望得到一个元组时它不会为我返回任何内容。所以我不太明白为什么它什么也不返回?

最佳答案

函数.groups()返回匹配正则表达式的捕获组的结果,在表达式中用 (<expression>) 表示.

在你的表情中[*]{2}\s+server.*NXDOMAIN() 中没有包含子表达式这将创建一个捕获组。因此,无论您的字符串匹配测试是否呈阳性,.groups()将始终为空,因为您尚未在正则表达式中定义任何捕获组。

另一个问题是您调用re.match() ,您指定要测试的表达式,但没有传递要测试的字符串...调用的格式为 re.match(<expression>, <string>)

<小时/>

如果您确实想使用捕获组,您可以将表达式括在 () 中,并且做...

match = re.match(r'([*]{2}\s+server.*NXDOMAIN)', '** server can\'t find mywebdomain.com: NXDOMAIN')
print(match.groups())
# ("** server can't find mywebdomain.com: NXDOMAIN",)

结果是 tuple您的捕获组结果。

另一个选项是保持表达式不变,而是使用 re.findall函数来获取你的匹配...

result = re.findall(r'[*]{2}\s+server.*NXDOMAIN', '** server can\'t find mywebdomain.com: NXDOMAIN')
print(result)
# ["** server can't find mywebdomain.com: NXDOMAIN"]

...它返回一个数组,其中包含在测试字符串中找到的所有匹配项。

关于python - re.groups() 什么也不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722477/

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