Python入门与进阶(10-7)

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

你可能感兴趣的:(Python入门与进阶(10-7))