一、正则表达式
1.1 对正则表达式的理解及python中正则使用的基本方法
1.1.1对正则表达式的理解
正则表达式由普通文本字符和特殊字符(元字符)两种字符组成的一系列的字符串的模式,
。元字符在正则表达式中具有特殊意义,它让正则表达式具有更丰富的表达能力。例如,
正则表达式 r"a.d"中 ,字符 ‘a’ 和 ‘d’ 是普通字符,’.’ 是元字符,. 可以指代任意字符,
它能匹配 ‘a1d’、’a2d’、’acd’等。
1.1.2python中正则表达式的基本使用方法
在Python中,利用re模块处理正则表达式,如下代码:
import re
#字符串1
regx_string='aab'
#字符串2
regx_string2='anb'
#生成一个匹配的正则表达式对象
pattern=re.compile('a.b')
#匹配字符串1
m1=pattern.match(regx_string)
print(m1)
# <_sre.SRE_Match object; span=(0, 3), match='aab'>
#匹配字符串2
m2=pattern.match(regx_string2)
print(m2)
# <_sre.SRE_Match object; span=(0, 3), match='anb'>
#字符串3
regx_string3='and'
m3=pattern.match(regx_string3)
print(m3)
# None
说明:match方法在字符串与正则表达式匹配的时候,返回的是一个Match对象,如果不匹配,则返回的是None
python中另一种使用正则的方法:
# match(pattern, string, flags=0)
m4=re.match('a.b',regx_string)
print(m4)
# <_sre.SRE_Match object; span=(0, 3), match='aab'>
1.2 python正则表达式中的元字符
1.2.1:"."
“.” 匹配除换行符之外的任何字符:字母、数字、符号、空白字符.
#示例:
#匹配一个以ab开关的字符串
print(re.match('^ab.*','abccd$#2'))
# <_sre.SRE_Match object; span=(0, 8), match='abccd$#2'>
#匹配一个以ac开关的字符串
print(re.match('^ac.*','abccd$#2'))
# None
1.2.3:"$"
“$” 匹配字符串的末尾或字符串末尾的换行符之前
#示例:
#匹配一个ac结尾的字符串:
print(re.match('.*ac$','adsfasdfac'))
# <_sre.SRE_Match object; span=(0, 10), match='adsfasdfac'>
#看结束点
print(re.match('.*ac$','adsfacdfac\n'))
# <_sre.SRE_Match object; span=(0, 10), match='adsfacdfac'>
print(re.match('.*ac$','adsfac\ndfac'))
# None
说明:$是一般情况下匹配一行的末尾,如果是多行,则没法进行匹配。但可以进行专门指定匹配多行
print(re.match('.*ac$','adsfac\ndfac',re.M))
# <_sre.SRE_Match object; span=(0, 6), match='adsfac'>,这种情况相当于没有指定多行的情况下直接匹配'adsfac'
1.2.4 “*”
“*” 重复匹配零次或者更多次(贪婪模式).
贪婪模式:尽可能多的匹配遇到的重复。
print(re.match('.*ac$','adsfac\ndfac',re.M))
# <_sre.SRE_Match object; span=(0, 6), match='adsfac'>,这种情况相当于没有指定多行的情况下直接匹配'adsfac'
#示例如下:
#匹配一个以a开始,以b结束的字符串
print(re.match('a.*b','aaaadbdgdbddf546b'))
#<_sre.SRE_Match object; span=(0, 17), match='aaaadbdgdbddf546b'>
#限制贪婪模式
print(re.match('a.*?b','aaaadbdgdbddf546b'))