Py002-02-11正则re
re模块
1 | import re |
常用正则规则
正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re
1 | '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 |
re的匹配语法有以下几种
- re.match 从头开始匹配
- re.search 匹配包含
- re.findall 把所有匹配到的字符放到以列表中的元素返回
- re.split 以匹配到的字符当做列表分隔符
- re.sub 匹配字符并替换
- re.fullmatch 全部匹配
match
1 | # 从头匹配 |
search
1 | # 全局匹配 |
findall
1 | # |
使用实例
1 | # 这俩效果一样 从头匹配 |
分组匹配
1 | # 匹配 单词 和数字 |
非常炫酷的例子
1 | # 模拟身份证号 |
splitall 和 split
1 | # 按数字分割 |
split更强大的用法
1 | s='9-2*5/3+7/3*99/4*2998+10*568/14' |
sub
用于替换匹配的字符串
1 | s = 'hjx22jack23ra\in31jin50#mock-Oldboy' |
re.fullmatch(pattern, string, flags=0)
整个字符串匹配成功就返回re object, 否则返回None
1 | re.fullmatch('\w+@\w+\.(com|cn|edu)',"alex@oldboyedu.cn") |
最后一个
re.compile(pattern, flags=0)
1 | prog = re.compile(正则) # 相当于把 正则 转换为代码规则 |
Flags标志符
- re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
- M(MULTILINE): 多行模式,改变’^’和’$’的行为
- S(DOTALL): 改变’.’的行为,make the ‘.’ special character match any character at all, including a newline; without this flag, ‘.’ will match anything except a newline.
- X(re.VERBOSE) 可以给你的表达式写注释,使其更可读,下面这2个意思一样
1 | re.search('a','alex',re.I) # 忽略大小写 |