Python(22)正则表达式中的“限定符”

大家好!我是码银

欢迎关注:

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

你可能感兴趣的:(正则表达式,python)