xiaohaodeboke

先看一个例子:

import re

string="abcdefg  acbdgef  abcdgfe  cadbgfe"

#带括号与不带括号的区别
regex=re.compile("((\w+)\s+\w+)")
print(regex.findall(string))
#输出:[(\'abcdefg  acbdgef\', \'abcdefg\'), (\'abcdgfe  cadbgfe\', \'abcdgfe\')]

regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(string))
#输出:[\'abcdefg\', \'abcdgfe\']

regex2=re.compile("\w+\s+\w+")
print(regex2.findall(string))
#输出:[\'abcdefg  acbdgef\', \'abcdgfe  cadbgfe\']

第一个 regex 中带有2个括号,我们可以看到其输出是一个list中包含2个tuple。

第二个 regex 中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

第三个 regex 中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

findall()返回的是括号所匹配到的结果,多个括号就会返回多个括号分别匹配到的结果,
如果没有括号就返回就返回整条语句所匹配到的结果。

 

参考链接:http://www.imooc.com/article/302796


注:这个特性是正则表达式特有的,而不仅仅只是python语言。

分类:

技术点:

相关文章: