人生苦短,我用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