是正则表达式匹配组(0)& group()一样吗?

时间:2015-10-13 12:42:19

标签: python regex python-2.7 grouping

import re

a = "AB01"
m = re.compile(r"([A-Z]{2})(\s?_?\s?)([0-9]{2})")  # note raw string
g = m.match(a)
if g:
  g = m.match(a).group(1) + "-" + m.search(a).group(3)
  print m.match(a).group()
  print m.match(a).group(0)
  print (m.match(a).group(0) == m.match(a).group())
  print g

在上面的代码中,群组m.match(a).group()的整个匹配是否与m.match(a).group(0)相同?如果是这样,哪个是首选用途?

1 个答案:

答案 0 :(得分:1)

the documentation

  

没有参数, group1 默认为零(整个匹配为   返回)。

所以,是的; .group()的结果与.group(0)相同。

请注意,您正在测试已编译的正则表达式的真实性,而不是它是否匹配,这看起来很奇怪。也许你的意思是:

a = "AB01"
m = re.compile(r"([A-Z]{2})(\s?_?\s?)([0-9]{2})")  # note raw string
g = m.match(a)
if g:
  ...

甚至只是:

...
g = re.match(r"([A-Z]{2})(\s?_?\s?)([0-9]{2})", a)
if g:
    ...

因为在这种情况下编译的好处很少。