Python 正则表达式
re:
re.match(pattern, string, flag=0) 从字符串的起始位置匹配
re.I 忽略大小写
re.L 本地户识别
re.M 多行匹配,影响^ $
re.S 匹配包括换行符在内的所有字符
re.U 根据unicode 字符集, 解析字符
re.X 以更灵活的方式理解正则表达式
re.search(pattern, string, flag=0) 扫描整个字符串,返回第一个结果
re.findall(pattern,string, flag=0) 扫描整个字符串,返回所有结果
元字符
匹配单个字符
. 匹配除换行符以外的任意字符
[]
[^] 匹配除了以外的所有字符
\d 数字 同[0-9]
\D 非数字 同 [^0-9]
\w 字母和下划线 数字,[0-9a-zA-Z_]
\W 非字母 下划线,数字
\s 任意空白符 空格 换行 换页 回车 制表 同[ \f\n\r\t]
\S 非空白字符
锚字符边界字符:
^ 行首
$ 行尾
\A 匹配字符串的开始 和^ 的区别 是 \A 只匹配整个字符串的开头, 即使在re.M 模式下 不会匹配行首
\Z 匹配字符串的结尾 和$d 的区别是\Z 只匹配末尾, 即使在re.M 的模式下、
\b 匹配单词的边界 , 单词和空格间的位置
\B 匹配非单词边界
匹配多个字符:
(abc)xyz作为一个整体去匹配
x? 匹配0个或一个x字符
x* 匹配0和或者任意多个字符
x+ 匹配一个或者多个任意字符
x{n} 匹配n个x
x{n,}
x{n,m}
x|y 匹配x或者y
(?:x) 类似(xyz) 但不是元组
re.finditer(pattern, string, flag) 与findall 类似, 返回的是一个迭代器
re.sub(pattern,repl,string,count=0,flag) 在字符串匹配正则,再把它们替换成指定的字符串, 返回值是字符串
re.subn(pattern,repl,string,count=0,flag) ,返回值是元组,包括被替换的次数
分组:
除了匹配字符串外, 还能提取子串, 用() 表示分组
?p<greouname>
编译:
1. 编译正则表达式
2. 用编译后的正则表达式 匹配
re.compile(pattern,flag)