美文网首页python技巧
正则表达式的捕获组和非捕获组

正则表达式的捕获组和非捕获组

作者: 陆_志东 | 来源:发表于2018-06-20 18:18 被阅读0次

如果使用正则表达式的findall操作,在正则匹配规则中如果使用了捕获组,则并不会返回全组结果,
而只是返回捕获组的结果
比如一下例子想要获取两个连续重复的词

str = 'abb db abc abc cc def def'
res = re.findall(r"(\w+)\s\1",str,flags=re.IGNORECASE)
print(res)
>> ['abc', 'def']
res = re.findall(r"((?P<p1>\w+)\s(?P=p1))",str,flags=re.IGNORECASE)
print(res)
>>[('abc abc', 'abc'), ('def def', 'def')]
res_list = []
for i in res:
    res_list.append(i[0])
print(res_list)
>>['abc abc', 'def def']

(patten) 匹配pattern并捕获结果,自动设置组号。
(?P<name>pattern) 匹配pattern并捕获结果,设置name为组名。
(\num) 对捕获组的反向引用。其中 num 是一个正整数
(?P=name) 对 命名的捕获组反向引用
(?:patten) 匹配结果但不捕获结果

相关文章

网友评论

    本文标题:正则表达式的捕获组和非捕获组

    本文链接:https://www.haomeiwen.com/subject/erbseftx.html