match.group(1)中的1是什么意思?

时间:2013-02-16 11:31:21

标签: python

我在这里遇到了代码:

>>> import urllib, re
>>> prefix = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
>>> findnothing = re.compile(r"nothing is (\d+)").search
>>> nothing = '12345'
>>> while True:
...     text = urllib.urlopen(prefix + nothing).read()
...     print text
...     match = findnothing(text)
...     if match:
...         nothing = match.group(1)
...         print "   going to", nothing
...     else:
...         break

1中的match.group(1)是什么意思?

2 个答案:

答案 0 :(得分:4)

1中的match.group(1)代表第一个带括号的子组。在你的情况下,第一个。

the official documentation re.MatchObject.group()对{{3}}进行了详细介绍,并以示例进行了最佳说明:

>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
>>> m.group(0)       # The entire match
'Isaac Newton'
>>> m.group(1)       # The first parenthesized subgroup.
'Isaac'
>>> m.group(2)       # The second parenthesized subgroup.
'Newton'
>>> m.group(1, 2)    # Multiple arguments give us a tuple.
('Isaac', 'Newton')

答案 1 :(得分:2)

1表示组中的数字 - 由括号对表示 - 在表达中。您的表达式只有一个组,但想象一下将"123 456"r"(\d+) (\d+)"匹配:group(1)"123"group(2)"456"和{{ 1}}始终是整个匹配,因此group(0)