正则表达式中的*和+
正则表达式中的*和+的区别不是只是+不能重复0次的区别吗?为什么在如下的代码中区别很大?content='''
苹果,是红色的
橙子,是橙色的
香蕉,是黄色的
西瓜,是绿色的
'''
import re
p=re.compile(r'(.*),.+(.+色)') #能匹配到不同的颜色
# p=re.compile(r'(.*),.+(.*色)') #只能匹配一个色字
for a in p.findall(content):
print(a)
因为 * 和 + 匹配时都是贪婪匹配模式
所以你使用第二个中,r'(.*),.+(.*色)' 红字部分将 "," 号到 "色" 字之间的字符都匹配掉了
而 蓝色 * 号因为可以匹配 0 次,此时就匹配 0 次 导致之显式一个 色字了
'(.*) , .+ (.+ 色))'
苹果 , 是 红 色) 的
'(.*) , .+ (.* 色)'
苹果 , 是红 色 的
Twilight6 发表于 2022-5-12 17:05
因为 * 和 + 匹配时都是贪婪匹配模式
所以你使用第二个中,r'(.*),.+(.*色)' 红字部分将 "," 号到 "色 ...
谢谢啦,醍醐灌顶
页:
[1]