基础匹配规则
\w 匹配字母数字及下划线 \W 匹配非字母数字下划线 \s 匹配任意空白字符,等价于 [\t\n\r\f]. \S 匹配任意非空字符 \d 匹配任意数字,等价于 [0-9] \D 匹配任意非数字 \A 匹配字符串开始 \Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 \z 匹配字符串结束 \G 匹配最后匹配完成的位置 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开头 $ 匹配字符串的末尾。 . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。 [...] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k' [^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 * 匹配0个或多个的表达式。 + 匹配1个或多个的表达式。 ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 {n} 精确匹配n个前面表达式。 {n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式 a|b 匹配a或b ( ) 匹配括号内的表达式,也表示一个组
在python中的运用方式
import re
导入re模块 官方文档
几种匹配方式
* re.match()
re 模块的的函数 re.match(参数1,参数2,参数3)
参数1:正则表达式;
参数2:匹配字符串;
参数3:匹配模式(贪婪…)
用法:从开头开始匹配;``` import re content = 'Hello 123 4567 World_This is a Regex Demo' result = re.match('^Hello.*Demo$', content) print(result) print(result.group()) print(result.span()) ``` * re.search() 参数与上面差不多;re.search 扫描整个字符串并返回第一个成功的匹配。如上例,匹配4567不需要从Hello开始匹配,从123开始匹配就可以了; * re.findall() re.findall() 搜索字符串,以列表形式返回全部能匹配的子串如'Hello 123 4567 World_This is a Regex Demo World_This is a '出现了两个World,用re.search(),可以匹配到第一个World,用findall()则可以匹配两个。 * re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串。 ``` import re content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings' content = re.sub('\d+', '', content) print(content) ``` 输出结果吧1234567变成" "了 * re.compile() 将一个正则表达式compile成一个规则,多次复用; ``` import re content = '''Hello 1234567 World_This is a Regex Demo''' pattern = re.compile('Hello.*Demo', re.S) result = re.match(pattern, content) print(result) ```
另 贪婪模式:当用.匹配多个字符时,如”akfjkfkgsfjgsj9793@#¥%…………@54866686123456”匹配后面的数字,用”.“匹配,他会默认吧后面数字也匹配到只剩下一个“6”,贼贪婪,防止这种情况发生,用”.?”匹配会匹配到你想要的结果。