1. 元字符
字符 | 解释 |
---|
. | 通配符,除了换行符外都能匹配 |
^ | 匹配最开始的首字母 |
$ | 匹配最结尾的字母 |
* | 重复匹配无穷次 |
+ | 前面一个字符匹配至少一次至无穷次 |
? | 前面一个字符匹配0次或者1次 |
{n} | 定义前一个字符n次 |
[] | 字符集,取里面的一个字符,没有元字符功能(例外:\ ^取反 -范围),[a,b] a或者b、[a-z] a到z |
| | 管道符 |
() | 分组 |
\ | 反斜杆后面跟元字符变成普通字符,反斜杠后面跟普通字符后面变成特殊字符 |
---|
\d | 匹配任何十进制数字;相当于类 [0-9] |
\D | 与 \d 相反,匹配任何非十进制数字的字符;相当于类 [^0-9] |
\s | 匹配任何空白字符(包含空格、换行符、制表符等);相当于类 [ \t\n\r\f\v] |
\S | 与 \s 相反,匹配任何非空白字符;相当于类 [^ \t\n\r\f\v] |
\w | 匹配任何字符,见上方解释 |
\W | 于 \w 相反 |
\b | 捕捉特殊字符的边界 |
\B | 与 \b 相反 |
(pattern,sting,flags)
-
findall()所有结果都返回到一个列表里
#匹配包括w和l中间任意字母 如果完全匹配直接用find
>>>re.findall('w\w{2}l','hello world')
结果['worl']
#匹配sim开头的字符串
>>>str = 'simon python study'
>>>re.findall('^sim.*',str)
结果['simon python study']
#匹配dy结尾的字符串
>>>re.findall('.*dy$',str)
结果['simon python study']
#匹配st开始包括后面任意长度字符串
>>>re.findall('st.*',str)
['study']
>>>re.findall('p*y',str)
结果['py', 'y']
>>>str = 'aaaaaaaaaaab'
>>>re.findall('a{1,3}b',str)
结果['aaab']贪婪匹配,匹配最多的三次
>>>re.findall('a[gh]b','agbfffffahbfffffffaghb')
结果 ['agb', 'ahb']二选一
#[]字符集
>>>re.findall('[^f,a]','agbfffffahbfffffffaghb')
结果['g', 'b', 'h', 'b', 'g', 'h', 'b']
#\b 捕捉a后特殊字符
>>>re.findall(r'a\b','abcd a bcd a*cd')
结果['a', 'a']
2. search()返回的是一个对象,如果没有匹配成功报错
>>>print(re.search('simon','simon is in study'))
结果<_sre.SRE_Match object; span=(0, 5), match='simon'>
>>>print(re.search('simon','simon is in study').group())
结果simon
>>>re.findall('\\\\','fff\dkkk')
['\\']
re.findall(r'\\','fff\dkkk')
['\\']
>>>re.search('(fg)|3','abcdefgfgfg').group()
结果'fg'
>>>re.search('(?P<id>\d{3})(?P<name>\w{3})','wwwww34ttt123ooo').group()
结果'123ooo' #分组匹配命名
>>> re.search('(?P<id>\d{2})(?P<name>\w{3})','wwwww34ttt123ooo').group()
结果'34ttt'
3. match()只在字符串开始匹配,返回对象
>>>re.match('abc','abcdefg').group()
结果'abc'
4. re.split()
>>>re.split('[b,f]','abcdbefg')
结果['a', 'cd', 'e', 'g']
5. re.sub()
>>>re.sub('s+','haha','abcdsssefsssssssssssg')
结果'abcdhahaefhahag'
6. re.compile()编译为一个可重复使用的pattern
>>>reobj = re.compile('\.com$')
>>>reobj.findall('www.test.com')
结果['.com']
>>>reobj.search('www.demo.com').group()
'.com'