Python正则表达式组()的工作原理
有人能解释一下为什么下面的每一张照片会给出不同的结果吗?谢谢Python正则表达式组()的工作原理,python,regex,Python,Regex,有人能解释一下为什么下面的每一张照片会给出不同的结果吗?谢谢 import re s = "-h5ello" m = re.match("-\w(\d\w+)", s) print ' m.group(): ',(m.group()) print ' m.group(0): ',(m.group(0)) print ' m.group(1): ',(m.group(1)) m.group()和m.group(0)应该是相同的 m.group(1)只提供第一对括号内的匹配项 编辑以澄清什么是“匹
import re
s = "-h5ello"
m = re.match("-\w(\d\w+)", s)
print ' m.group(): ',(m.group())
print ' m.group(0): ',(m.group(0))
print ' m.group(1): ',(m.group(1))
m.group()
和m.group(0)
应该是相同的
m.group(1)
只提供第一对括号内的匹配项
编辑以澄清什么是“匹配组”:
在正则表达式中,普通括号称为“捕获”。这是因为它们将子匹配捕获到捕获组中。考虑这一点:
import re
m = re.match(r'a(b)c(d(e)f)g', 'abcdefg')
print m.group()
# => 'abcdefg'
print m.groups()
# => ('b', 'def', 'e')
m.group(0)
,或等效的m.group()
,是整个匹配。括号选择子匹配,第一个括号对产生m.group(1)
,第二个m.group(2)
,第三个m.group(3)
在您的示例中,也有括号。它们不包括-\w
,因此您的m.group(1)
不包括字符串的-h
部分-它们只包括\d\w+
的子匹配项,即5ellom.group()
和m.group(0)
如果存在匹配项,只需返回整个字符串。
它们相同的原因是函数的默认值为零:
def group(num=0):
至于比赛:
m.group(1),m.group(2).
返回匹配的组(在您的示例中,只有一个)
有关matche组的更多信息,请参见您好,是的,我可以看到,但在python文档中看不到任何解释。“整个字符串”和“匹配组”之间的区别是什么?您可以阅读查找:\number
进一步,请参阅上面答案中的更新。是的,我看到了。我在寻找更全面的答案。组()和组(1)之间的差异。group()和group(1)都应该打印相同的结果,因为这里只有一个匹配的字符串。那么为什么group()和group(1)的行为不同呢?现在就明白了。还有一个问题。如果组(1)只考虑括号内的内容,那么为什么组(1)没有给出s=“-eh5ello”的结果,因为这不匹配。你想要一个破折号,一个字母,一个数字,还有更多的字母;但是你有一个破折号,两个字母,一个数字和更多的字母。