正则表达式在很多语言里都支持,Python也不例外,re模块就是正则表达式的应用。
正则表达式对字符串的逻辑操作,主要是对字符串的一种过滤,用“元字符” 与“普通字符”组成一个字符串规则对已知的字符串或文本过滤出自己想要的字符串。
1、正则表达式元字符
\转义字符,将后边紧跟着的字符变成特殊字符,或将后边的特殊字符变成普通字符
如:在正则表达式中,"\n"换行符,"\\"则代表一个普通字符"\"
^ 匹配第一行行首,匹配多行需要传参 flags=re.MULTILINE
$ 匹配最后一行行尾,匹配多行需要传参 flags=re.MULTILINE
. 除"\r""\n"外,匹配任意的单个字符,要使"."匹配换行符,flags=re.DOTALL
| 或,如 "aaa|bbb|ccc",表示"aaa","bbb","ccc"三选一
? 匹配前边的子表达式0次或1次,等价于{0,1}
+ 匹配前边的子表达式1次或多次,等价于{1,}
* 匹配前边的子表达式0次或多次,,等价于{0,}
{}
{n}匹配前边的子表达式n次,{n,}匹配前边的子表达式至少n次 即:>= n,
{n,m}匹配前边的子表达式n~m次,即:n<= 表达式 <=m
() 分组,从1开始,从左至右数"("为第几组,下标0为全部分组
[]
字符集匹配[]中的人一个字符,之匹配一次,如[abc]:表示"a","b","c"三选一。
也可以给定范围(必须是连续的才行),如[a-z]:表示a到z任意一个字符。
还可以取反,如[^abc]:除"a","b","c"外的任意字符。
注:[]中只有"^","-","\"三个特殊字符,其中"\"代表转义字符,
其它的都代表原本普通的字符,如:[.]只是一个普通的点字符
注:要使用元字符本身的普通字符,请使用转义字符转义一下,如 :"\(" 在正则表达式中代表普通给"("字符,其它的雷同
分组的用法:
(\num) 引用指定第几分组的值(?P<name>) 指定分组别名"name"
(?P=name) 引用指定别名的分组的值
(?:)
相当于去分组化,变成"与"()子集,
如:"abc(?:qqq|www)"-->相当于"abcqqq|abcwww"
(具体用法请看下边(search函数))
2、预定义字符集
\b匹配一个单词边界,也就是指单词和空格间的位置,
其它特殊字符也可以是单词的边界,如"#","$","&","*"等
\B 匹配非单词边界
\d 匹配一个数字字符。等价于[0-9]
\D 匹配一个非数字字符。等价于[^0-9
\s
匹配任何不可见字符,包括空格、制表符、换页符等,
等价于[ \f\n\r\t\v]
\S 匹配任何可见字符。等价于[^ \f\n\r\t\v]
\w
匹配包括下划线的任何单词字符。这里的"单词"字符使用Unicode字符集,
类似但不等价于“[A-Za-z0-9_]”,还包含汉字等它国字符
\W
匹配任何非单词字符。这里的"单词"字符使用Unicode字符集,
类似但不等价于“[^A-Za-z0-9_]”,还包含汉字等它国字符
3、re模块常用函数