Python 正则表达式 .+ .+? .* .*?

.+与.*

.+表示匹配任意字符一个或则多个
.*?表示匹配任意字符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

你可能感兴趣的:(Python,python)