正则表达式是处理字符串非常有用的工具,学习起来也足够的蛋疼,为此总结一下正则表达式。Python中提供了re模块对正则表达式操作的功能。下面就了解正则表达式的元字符。
一.元字符
1."."
匹配换行符以外的任意单个字符
2."*"
匹配位于*之前的字符0或者多次
3."+"
匹配位于+之前的字符1一次或者多次,也就是贪婪模式
4."-"
在[]中表示范围
5."|"
匹配位于"|"之前或者之后的字符
6."^"
匹配行首,匹配以"^"后面的字符开头的字符串
7."$"
匹配行尾,匹配以$之前字符结束的字符串
8."?"
匹配位于"?"之前的0个或者1个字符,是非贪婪模式
9."\"
转义字符
10."\f"
匹配换页符
11."\n"
匹配换行符
12."\r"
匹配回车符
13."\b"
匹配字符串头或者尾
14."\d"
匹配任意数字
15."\D"
匹配非数字
16."\s"
匹配任意空白字符,空格、换行符等
17."\S"
与"\s"相反
18."\w"
匹配任意字母、数字和下划线
19."\W"
与"\w"相反
20."()"
代表()内是一个整体
21."{}"
按照"{}"内的次数进行匹配,例如:a{1,},匹配1个到多个字符a
22."[]"
匹配在"[]"内的字符
23.[^]
在"[]"内,^代表取反
二、re模块的主要方法
1.compile
创建模式对象,把正则表达式编译成Pattern实例,并用这个实例处理字符串获得匹配结果,结合下面几种查找方法使用。
import re#导入re模块
str1="acsdvfdbfdbdrsdfdsfvf"
pattern=re.compile(r'\w+d\w+')
print(pattern)
print(type(pattern))
打印的结果
2.search
在整个字符串进行查找,返回一个match对象
import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#编译正则表达式,匹配B开头的单词
res=pattern.search(example)#Pattern的查找方法
print(res)
返回匹配到的字符串索引,一个match对象
3.match
在字符串开始处进行匹配,返回一个match对象
把search方法换成match方法
import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#编译正则表达式,匹配B开头的单词
res=pattern.match(example)#Pattern的查找方法
print(res)
返回的是none,因为match是从字符串头开始匹配
pattern=re.compile(r'\bs\w+\b')#匹配s开头的单词
结果为:<_sre.SRE_Match object; span=(0, 8), match='shascddo'>
4.findall
找到匹配模式中的所有项
import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bs\w+\b')
res=pattern.findall(example)#换成findall方法
print(res)
匹配结果:['shascddo'],和match方法不同,返回找到的列表,并且是在整个字符串中查找
5.split
根据表达式进行分割
import re
str1="asdcsd.sdvds...sdvs"
pat=re.compile(r'[\.]')#\在这里是转义字符,匹配.
pat=pat.split(str1,maxsplit=2)#maxsplit是最多切割次数
print(pat)
maxsplit是可选参数,不填会默认匹配所有的"."进行分割
打印结果:['asdcsd', 'sdvds', '..sdvs']
6.sub
替换字符串
import re
str1="sdvdIgdgbs"
pat=re.compile(r'[I]')#找到字符I
str1=pat.sub('i',str1)#替换
print(str1)
打印结果为:sdvdigdgbs
鉴于在学习正则的烦恼,总结一些常用的正则表达式和re的一些方法。参考:《python程序设计》。