10-7 匹配0次1次或者无限多次
# 数量词
# * 匹配*前面的字符0次或者无限多次
# + 匹配*前面的字符1次或者无限多次
# ? 匹配?前面的字符0次或者1次
import re
a = 'pytho0python1pythonn2'
r = re.findall('python*',a) # 用* ,匹配*前面的字符0次或者无限多次
print(r)
# 打印结果如图1
# + 匹配*前面的字符1次或者无限多次
import re
a = 'pytho0python1pythonn2'
r = re.findall('python+',a) # 用+ ,匹配+前面的字符1次或者无限多次
print(r)
# 打印结果如图2
# ? 匹配?前面的字符0次或者1次
import re
a = 'pytho0python1pythonn2'
r = re.findall('python?',a) # 用? ,匹配?前面的字符0次或者1次
print(r)
# 打印结果如图3 ,打印第三个Python的时候,虽然是pythonn,但是打印出来的仍然是Python,
# 只是匹配了0次或者1次,多余的n都会被略去
# 在和贪婪与非贪婪中的?相比较的时候,贪婪与非贪婪出现的是范围,加问号表示非贪婪
# 这里表示:匹配?前面的字符0次或者1次
# 看看下面三段代码的意义和结果
import re
a = 'pytho0python1pythonn2'
r = re.findall('python?',a) # 用? ,匹配?前面的字符0次或者1次
print(r)
import re
a = 'pytho0python1pythonn2'
r = re.findall('python{1,2}?',a) # 用python{1,2}?表示非贪婪
print(r)
import re
a = 'pytho0python1pythonn2'
r = re.findall('python{1,2}',a) # 用python{1,2}表示贪婪
print(r)
# 打印结果如图4,三段代码的结果截然不同,意义不一样
1.jpg
2.jpg
3.jpg
4.jpg
网友评论