简介:
正则表达式:用来匹配特定规则的字符串。
正则表达式是处理字符串的强大工具,有特定的语法结构;实现字符串的检索、替换、匹配验证等。
元字符
| 模式 | 描述 | 
|---|---|
| . | 匹配除换行符之外的任意字符 | 
| ^ | 匹配开头 | 
| $ | 匹配结尾 | 
| * | 匹配任意多个(0个或多个) | 
| + | 匹配1个或多个(至少一个) | 
| ? | 匹配0个或1个;非贪婪模式 | 
| {n} | 匹配n个前面前面的表达式 | 
| {m, n} | 匹配m到n个前面表达式定义的片段,贪婪模式 | 
| | | 匹配满足的两个表达式 如 re.findall(r'ab|dc', 'abc-adc-bcd') | 
| \ | 转义元字符;匹配正则中使用的特殊字符 | 
| () | 匹配括号内的表达式,也表示一个组(分组) | 
| [] | 列举出他的字符 | 
| .* | 通用匹配,尽可能多的匹配 | 
| .*? | 通用匹配,尽可能少的匹配;因此.*?匹配不到结尾的内容 | 
预定义字符组
| 模式 | 描述 | 
|---|---|
| \w | 匹配字母、数字及下划线 | 
| \d | 匹配任意数字,相当于[0-9] | 
| \s | 匹配任意空白字符,相当于[\t\n\r\f] | 
| \W | 取反,匹配非字母、数字、下划线 | 
| \D | 取反,匹配任意非数字的字符 | 
| \S | 取反,匹配任意非空字符 | 
修饰符
| 修饰符 | 描述 | 
|---|---|
| re.S | 使 . 匹配包括换行符在内的所有字符。(常用,如:re.findall(r"\w+", text, re.S))第三个参数) | 
| re.I | 使匹配对大小写不敏感,也就是不区分大小写 | 
方法(api)
match()
从字符串的开头位置匹配正则表达式,如果匹配,就返回匹配成功的结果;如果不是开头,那就匹配不到则返回None;适合用来检测某个字符串是否符合某个正则表达式的规则。
match() 方法,第一个参数传入正则表达式,第二个参数传入要匹配的字符串。如果匹配成功,返回结果是一个SRE_Match对象, 该对象有两个方法:group()方法可以输出匹配的内容,span()方法可以输出匹配的范围。
search()
在匹配时会扫描整个字符串,然后返回第一个成功匹配的结果,若扫描完仍没找到,就返回None。
findall()
该方法会搜索整个字符串,然后返回匹配正则表达式的所有内容。它返回的是一个列表类型,因此可以遍历、索引、切片取值。
sub()
批量修改满足匹配正则表达式的原字符串中的内容。第一个参数是匹配的正则表达式,第二个参数为替换成的字符串,第三个参数是原文本。第四个可选参数 count 匹配替换次数,count=0 默认全部替换。
res = re.sub('\d+', '', text) # 将字符串中的所有数字替换为空
split()
切割字符串,可选参数 maxsplit=0 默认全部切割
compile()
该方法可以将正则字符串编译成正则表达式对象,以便在后面的匹配中复用。
 import re
 
 text1 = '2019-12-15 12:00'
 text2 = '2019-12-15 12:20'
 
 pattern = re.compile('\d{2}:\d{2}')     # 先写一个要匹配正则表达式的规则;待后面复用
 res1 = re.sub(pattern, '', text1)       ==> '2019-12-15'
 res2 = re.findall(pattern, text2)       ==> '12:00'
 
                    
                
                
            
        
浙公网安备 33010602011771号