常用正则表达式字符说明

元字符

. . 除换行符的任意字符 DOTALL
\ 转义字符
[…] 字符集合
\d 数字:[0-9]
\D 非数字[^0-9]
\s 空白字符[<空格>\t\r\n\f\n]
\S 非空白字符[^\s]
\w 单词字符[A-Za-z0-9_]
\W 非单词字符[^\w]

数量词

* 匹配前一个字符0或者多次
+ 匹配前一个字符1次或者多次
? 匹配前一个字符0次或者1次
{m} 匹配前一个字符m次
{m,n} 匹配前一个字符m至n次
数量词? 变成非贪婪模式

边界

^ 匹配字符串开头,多行匹配每一行开头
$ 匹配字符串末尾,多行匹配每一行末尾
\A 仅匹配字符串开头
\Z 仅匹配字符串末尾
\b 匹配\w 和 \W 之间


逻辑、分组

| 左右表达式任意匹配一个
先匹配左边一旦成功则跳过匹配右边
如果|没有包含在()中,匹配整个正则表达式

(…) 分组匹配,从左到右,每遇到一个 ( 编号+1
分组后面可加数量词

(?P<name>…) 除了分组序号外,指定一个 name的别名
\<number> 引用编号为<number>的分组匹配到的字符串
(?P=name) 引用别名为<name>的分组匹配到的串


特殊构造

(?:…) (…)不分组版本,用于使用 | 或者后接数量词
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正
则表达式的开头,可选多个

(?#...) #号后的内容将作为注释
(?=…) 之后的字符串内容需要匹配表达式才能成功匹配
(?!...) 之后的字符串不匹配表达式才能成功
(?<=…) 之前的字符串需要匹配表达式才能成功
(?<!...) 之前的字符串需要不匹配表达式才能成功

(?(id/name) yes |no) 如果编号为id/名字为name的组匹配到字符串,则需
要匹配yes,否则匹配no,no可以省略

iLmsux

I re.I 忽略大小写
L re.L 使用预定字符类 \w \W \b \B \s \S 取决当前区域设定
m re.M 多行模式改变^ 和 $ 的行为
s re.S .任意匹配模式
u re.U 使用预定字符类 \w \W \b \B \s \S \d \D 取决unicode定义的字
符属性
x re.X 详细模式,可以多行,忽略空白字符,并且可以加入注释

posted @ 2017-03-25 23:05  山的那一边  阅读(286)  评论(0编辑  收藏  举报