python贪婪和非贪婪¶
Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
非贪婪则相反,总是尝试匹配尽可能少的字符。
在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
1 2 3 4 5 6 7 8 |
|
匹配的结果:
1 |
|
正则表达式模式中使用到通配字,那它在从左到右的顺序求值时,会尽量“抓取”满足匹配最长字符串,在我们上面的例子里面,“\d+”会从字符串的启始处抓取满足模式的最长数字字符,于是抓取到了“aaa123456”,而不是只抓取“aaa1”,
解决方式:非贪婪操作符“?”,这个操作符可以用在"*","+","?"的后面,要求正则匹配的越少越好。
1 2 3 4 5 6 |
|
运行结果:
1 |
|