大家好!我是码银

欢迎关注:

CSDN:码银

公众号:码银学编程

获取资源:公众号回复“python资料”


限定符功能
?匹配前面的字符0次或1次
+匹配前面的字符1次或多次
*匹配前面的字符0次或多次
{n}匹配前面的字符n次
{n,}匹配前面的字符最少n次
{n,m}匹配前面的字符最小n次,最多m次

下面请看举例:

正文

使用“?”

在正则表达式中若某些括号内的字符串或正则表达式可有可无,执行搜寻时皆算成功,例如,aaa字符串可有可无,表达方式是(aaa)?。

import remsg = '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.pyyearsyearProcess finished with exit code 0

其中year(s)?当中的小括号是可以去掉的,因为我们只判断了一个字母“s”是否存在。如果判断多个字母的话就可以这么写:‘year(ss)?’

使用“+”

在正则表达式中若是某些字符串或正则表达式可从1到多次,执行搜寻时皆算成功,例如:

import remsg = '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.pyyearssyearsssProcess finished with exit code 0

如果没有对应的字符串可以直接:print(tx) 会输出“none”。

使用“*”

在正则表达式中若某些字符串或正则表达式可从0到多次,执行搜寻时皆算成功,例如,aa字符串可从0到多次,表达方式是(aa)*。

import remsg = '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.pyyearyearsssProcess finished with exit code 0

使用“{ }”

大括号的数字是设定重复次数。可以将这个观念应用在搜寻一般字符串,例如,(so){3} 代表所搜寻的字符串是‘sososo’,如果有一字符串是‘so’, 则搜寻结果是不符。

大括号除了可以设定重复次数,也可以设定指定范围,例如,(so){3,5} 代表所搜寻的字符串如果是‘sososo’ ‘sosososo’ 或 ‘sososososo’ 皆算是相符合的字符串。

那么(so){3,}代表着所搜寻的字符串是“sososo”……“sososo…”。

import remessage = '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.pyyearsssyearsyearssProcess finished with exit code 0