python group(0)的意思

时间:2016-04-19 20:24:41

标签: python regex

组(0)的确切定义是什么? 研究?

有时搜索会变得复杂,我想知道定义的组(0)值是多少?

只是举一个混淆来源的例子,考虑这种匹配。打印结果仅为def。所以在这种情况下,组(0)没有返回整个匹配。

 m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
def

2 个答案:

答案 0 :(得分:4)

match_object.group(0)表示选择了match_object的整个部分。

另外,组(0)可以通过将其与组(1),组(2),组(3),...,组(n)进行比较来解释。 Group(0)定位整个匹配表达式。然后确定更多匹配位置使用paranthesis:group(1)表示第一个paranthesis对定位匹配表达式1,group(2)表示第二个下一个paranthesis对定位匹配表达式2,依此类推。在每种情况下,开口支架通过使用最远的闭合支架来形成一个paranthesis对来确定下一个paranthesis对。这可能听起来令人困惑,这就是为什么下面有一个例子。

但是你需要区分'(?&lt; = abc)'的语法。这些paranthesis具有不同的句法意义,即定位受'?&lt; ='约束的内容。所以你的主要问题是你不知道'?&lt; ='是做什么的。这是一个所谓的后视,这意味着它匹配它所绑定的表达式后面的部分。

在下面的例子中,'abc'受到了后卫的约束。

形成匹配组0不需要任何限制,因为它无论如何都会找到整个匹配对象。

字母'd'前面的开口括号取字母'f'前面的最后一个右括号,形成匹配组1。

字母'e'周围的括号定义匹配的组2。

import re

m = re.search('(?<=abc)(d(e))f', 'abcdef')

print(m.group(0))
print(m.group(1))
print(m.group(2))

打印:

DEF 德 ë

答案 1 :(得分:3)

group(0)返回正则表达式匹配的完整字符串。只是abc不是比赛的一部分。 (?<=abc)abc不匹配 - 它匹配字符串中紧跟abc 之前的任何位置。