.+表示匹配任意字符一个或则多个
.*?表示匹配任意字符0个或多个
区别需要明确贪婪和非贪婪匹配
比如串a111b222b
如果有正则表达式:
import re
str = "a111b222b"
print(re.findall(r"a.+?b", str))
输出结果为:a111b
import re
str = "a111b222b"
print(re.findall(r"a.+b", str))
输出结果为:a111b222b
此处?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况。
因此当匹配一个以某个字符开头但是以结尾没指定的串的时候(此时默认串本身的结尾就是想要的结尾)
例如"a111b222",想找到b开头的串"b222":
import re
str = "a111b222"
print(re.findall(r"b.+?", str))
输出结果为:b2
为获取正确的结果应该为
import re
str = "a111b222"
print(re.findall(r"b.+", str))
输出结果为:b222