|
你确认你后面那个能匹配到结果??'ababababababadd' 那里有符合 (ab){2,3}?dd 的?? 能不能自己多敲几次代码,看仔细一些?发帖内容都不对!
你这是自己把问题复杂化了,(ab)直接用一个字母替代不就好了,加什么大括号,直接用 .*?不是一样么。。
[i for i in re.finditer('a{1,8}?dd','aaaadd')]
[<re.Match object; span=(0, 6), match='aaaadd'>]
你认为应该出一个 add 才是吧?
换成这样的呢?
[i for i in re.finditer('.*?dd','aaaadd')]
[<re.Match object; span=(0, 6), match='aaaadd'>]
是否应该是匹配dd前一个字符,还是匹配dd前全部的字符?
惰性和贪婪问题,应该是向前的(自左向右),就是不影响到下一个可匹配项的情况下,进行惰性或者贪婪选择,设计一个特例,即可看出:
将间隔字母dd,调整为匹配字母a,就可得到你之前预想的结果。
[i for i in re.finditer('(a{2,8}?a)','aaaaaaaaa')]
[<re.Match object; span=(0, 3), match='aaa'>, <re.Match object; span=(3, 6), match='aaa'>, <re.Match object; span=(6, 9), match='aaa'>] |
|