大家好!我是码银
欢迎关注:
CSDN:码银
公众号:码银学编程
获取资源:公众号回复“python资料”
限定符 | 功能 |
? | 匹配前面的字符0次或1次 |
+ | 匹配前面的字符1次或多次 |
* | 匹配前面的字符0次或多次 |
{n} | 匹配前面的字符n次 |
{n,} | 匹配前面的字符最少n次 |
{n,m} | 匹配前面的字符最小n次,最多m次 |
下面请看举例:
在正则表达式中若某些括号内的字符串或正则表达式可有可无,执行搜寻时皆算成功,例如,aaa字符串可有可无,表达方式是(aaa)?。
import re
msg = 'During my two years living in London'
message = 'During my one year living in London'
pattern = 'year(s)?'
tx = re.search(pattern,msg)
print(tx.group())
txt = re.search(pattern,message)
print(txt.group())
输出结果:
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test4.py
years
year
Process finished with exit code 0
其中 "year(s)?" 当中的小括号是可以去掉的,因为我们只判断了一个字母“s”是否存在。如果判断多个字母的话就可以这么写:'year(ss)?'
在正则表达式中若是某些字符串或正则表达式可从1到多次,执行搜寻时皆算成功,例如:
import re
msg = 'During my two yearss living in London'
message = 'During my one yearsss living in London'
pattern = 'years+'
tx = re.search(pattern,msg)
print(tx.group())
txt = re.search(pattern,message)
print(txt.group())
输出结果:
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test4.py
yearss
yearsss
Process finished with exit code 0
如果没有对应的字符串可以直接:print(tx) 会输出“none”。
在正则表达式中若某些字符串或正则表达式可从0到多次,执行搜寻时皆算成功,例如,aa字符串可从0到多次,表达方式是(aa)*。
import re
msg = 'During my two year living in London'
message = 'During my one yearsss living in London'
pattern = 'years*'
tx = re.search(pattern,msg)
print(tx.group())
txt = re.search(pattern,message)
print(txt.group())
输出结果:
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test4.py
year
yearsss
Process finished with exit code 0
使用“{ }”
大括号的数字是设定重复次数。可以将这个观念应用在搜寻一般字符串,例如,(so){3} 代表所搜寻的字符串是‘sososo’,如果有一字符串是‘so', 则搜寻结果是不符。
大括号除了可以设定重复次数,也可以设定指定范围,例如,(so){3,5} 代表所搜寻的字符串如果是‘sososo’ ‘sosososo' 或 'sososososo' 皆算是相符合的字符串。
那么(so){3,}代表着所搜寻的字符串是“sososo”……“sososo...”。
import re
message = 'yearsss'
msg = 'years'
m = 'yearss'
pattern = 'years{1,3}'
txt = re.search(pattern,message)
print(txt.group())
txt = re.search(pattern,msg)
print(txt.group())
txt = re.search(pattern,m)
print(txt.group())
输出结果:
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test4.py
yearsss
years
yearss
Process finished with exit code 0