Python中,re模块提供了正则表达式操作所需要的基本功能
一、正则表达式元字符
1.元字符:.
匹配除换行符以外的任意单个字符
2.元字符:?
匹配?之前的0或1个字符
3.元字符:*
匹配*之前的0或多个字符
4.元字符:+
匹配+之前的1或多个字符
5.元字符:|
匹配|之前或之后的字符
6.元字符:\
表明\后为转义字符
7.元字符:^
匹配行首,匹配以^后面字符开头的字符串
8.元字符:$
匹配行尾,匹配以$前面字符结尾的字符串
9.元字符:[]
匹配位于[]中的任意一个字符
10.元字符:-
用在[]之内用来表示范围
11.元字符:()
将位于()内的内容作为一个整体对待
12.元字符:{}
按{}中的次数进行匹配
13.元字符:\b\B
匹配单词头、单词尾,\\不明意义,非单词头、单词尾
14.元字符:\d\D
匹配任何数字,相当于[0-9]相反
15.元字符:\s\S
匹配任何空白字符 相反
16.元字符:\w\W
匹配任何字母、数字、下划线,相当于[a-zA-Z0-9_]相反
- 如果原字符串中有\d出现,想查找它,需要在正则中用\\\d
- 如果原子符串中有+[]等符号出现,想查找他,需要在正则前加一个\即可
二、注意事项
1.数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。
而如果使用非贪婪的数量词”ab*?”,将找到”a”,加个问号代表尽可能少的匹配。
除非结尾有特定要求,一般都是贪婪的。
2.反斜杠的困扰
与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的9原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\”表示。同样,匹配一个数字的”\d”可以写成r”\d”。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。