>>> 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>”
匹配上述的字符串,正则表达式如何写?