贪婪匹配:
+,?,*,{n},{n,},{n,m}
匹配时,如果遇到上述标识符,代表是贪婪匹配,会尽可能多的去匹配内容.
下面是贪婪匹配的示例:
content = 'Xiaoshuaib has 102 bananas'
#贪婪匹配:
res1 = re.findall('^Xi.*(\d+).*$',content)
#直到遇到最后一个符合条件的(/d)为止,这时遇到最后一个符合条件的元素是2 -> 2
----------------------out----------------------
res1: ['2']
非贪婪匹配:
尽量匹配少的内容,一旦碰到第一个符合条件的元素就不再继续向后匹配
标识符:
+?,??,*?,{n}?,{n,}?,{n,m}?
(在贪婪标识符后面加?)
res2 = re.findall('^Xi.*?(\d+).*$',content)
#非贪婪匹配,遇到第一个符合条件的元素就放弃匹配,第一个符合条件的元素是1 -> 102
-------------------out------------------
res2: ['102']
本文介绍了正则表达式中的两种匹配策略:贪婪匹配与非贪婪匹配。通过实例讲解了这两种策略的区别,即贪婪匹配会尽可能多地匹配字符,而非贪婪匹配则尽可能少地匹配字符。
1349

被折叠的 条评论
为什么被折叠?



