贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配 ( * );
非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配 ( ? );
? | 重复匹配0次或1次 |
* | 重复匹配0次或更多次 |
+ | 重复匹配1次或更多次 |
默认情况下是贪婪的!
content = 'abbbbc'
1、'ab*'
pattern = re.compile(r'ab*')
result = pattern.findall(content)
print(result)
输出为:
2、'ab?'
pattern = re.compile(r'ab?')
result = pattern.findall(content)
print(result)
输出为:
3、'ab*?'
pattern = re.compile(r'ab*?')
result = pattern.findall(content)
print(result)
输出为:,在这里,即使前面有 *,但是 后面的? 决定了尽可能少匹配 b,所以没有 b。
+号也一样
4、'ab+'
pattern = re.compile(r'ab+')
result = pattern.findall(content)
print(result)
输出为:也和*号一样
5、'ab+?'
pattern = re.compile(r'ab+?')
result = pattern.findall(content)
print(result)
输出为:在这里,由于+号必须匹配一次,所以必须有一个b