正则表达式-贪婪与懒惰 python篇

人生苦短,我用python

#coding=utf-8
import re

line = "aooooaay123"
reg_str = ".*(a.*a).*"
match_obj = re.match(reg_str,line)
if match_obj:
    print(match_obj.group(1))

输出结果aa
为什么是aa而不是aooooa呢
我是这样子理解的,正则通常的行为是尽可能多的匹配,所以在

.*

的时候他可以匹配到aooooa,所以里面的括号才会匹配到aa
括号的意思是子集
所以如果我想匹配到aooooa的话我就应该将line改为

reg_str = ".*?(a.*?a).*"

?号的意思是懒惰模式 尽可能匹配少一点
输出结果才是aooooa

All posts

Other pages

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注