Python的re模块,正则表达式书写方法 (2)

>>> re.match("D:\\python\\test","D:\\python\\test")  #这样写是不对的,python会把\解析为转义字符,如何能避免呢,下面这样写,在正则表达式的前面加r

>>> re.match(r"D:\\python\\test","D:\\python\\test")

<_sre.SRE_Match object; span=(0, 14), match='D:\\python\\test'>

Ps:推荐每当写正则表达式的时候,不管后面有没有转义字符,都加r

 

re.match(r"^.+ve\B","ho ver")  #\B表示前面的字符e不在边界

<_sre.SRE_Match object; span=(0, 5), match='ho ve'>

 

>>> re.match(r"^.+ve\b","ho  ve  r")

<_sre.SRE_Match object; span=(0, 5), match='ho ve'>

 

>>> re.match(r"\w+\b\s+\w+\b\s+\w+\b","I love python")

<_sre.SRE_Match object; span=(0, 13), match='I love python'>

 

 

 

 

|管道符,逻辑或符号,在正则表达式中一样表示或,即匹配|符号两边的任意一个表达式都可以

比如,匹配0-100的数字:

#分析:第一个|符号前面的表达式是0,匹配0,第二个是100,第三个是匹配两位数字或者1位数字,第一位数字是1-9,第2位数字是0-9,?意思是可以有可以没有。

re.match(r"0|100|[1-9][\d?]$","90") 

<_sre.SRE_Match object; span=(0, 2), match='90'>

>>> re.match(r"0|100|[1-9][\d?]$","0")

<_sre.SRE_Match object; span=(0, 1), match='0'>

 

完善后:

>>> re.match(r"[1-9]?\d$|100","0")   #0匹配了第二个\d$

<_sre.SRE_Match object; span=(0, 1), match='0'>

 

第四部分,分组:

字符

 

功能含义

 

|

 

匹配左右任意一个表达式

 

ab

 

将括号中的字符作为一个分组

 

\num

 

引用分组num匹配到的字符串

 

(?P<name>)

 

给分组起名字

 

(?P=name)

 

引用分组的名字

 

 

举例:

#定义一个字符串s

S=”<html><body><p>python</p></body></html>”

 

匹配上述的字符串,正则表达式如何写?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpjsw.html