一.正则表达式
定义:具有特殊含义符号组合到一起用来描述字符或字符串的一种方法。内嵌在Python中,通过
re模块实现,被编译成一系列字节码,由C编写的匹配引擎执行。
1.常用匹配模式
2.常用的re模块函数
(1). re.match()
决定RE是否在字符串刚开始的位置匹配。//注:这个方法并不是完全匹配。当pattern结束时若string还有剩
余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$
格式:
re.match(pattern, string, flags=0)
print(re.match('com','comwww.runcomoob').group())
print(re.match('com','Comwww.runcomoob',re.I).group())
执行结果如下: com com
(2).re.search()
格式:
re.search(pattern, string, flags=0)
re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
示例:
print(re.search('\dcom','www.4comrunoob.5com').group())
执行结果如下:
4com
(3).re.findall()
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
格式:
re.findall(pattern, string, flags=0)
p = re.compile(r'\d+')
print(p.findall('o1n2m3k4'))
执行结果如下: ['1', '2', '3', '4']
(4).一些注意点:
(1)re.match与re.search与re.findall的区别:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
而re.search匹配整个字符串,直到找到一个匹配。
(2)贪婪匹配与非贪婪匹配
*?,+?,??,{m,n}? 前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配