2015-10-13 34 views
0
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)?如果是这样,哪个是首选用途?正则表达式匹配组(0)和组()相同吗?

+0

要么提出您的问题或不要,请停止对冲的第一句话。 – jonrsharpe

回答

1

the documentation

没有参数,组1默认为零(整场比赛是 返回)。

所以,是的; .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: 
    ... 

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

+0

哎呦错过了那一个。我的代码已更新 –

+0

@MrMysteryGuest请注意,这可以让您将重复的“m.match(a)” – jonrsharpe