Python正则表达式

语法 说明 表达式实例 完整匹配实例
一般字符 匹配自身 abc abc
. 匹配任意除换行符"\n"外的字符。在DOTALL模式中也能匹配换行符 a.c abc
\ 转义字符,使后一个字符改变原来的意思。如果字符串中有字符*需要匹配,可以使用*字符集[*] a\.c a.c
[...] 字符集(字符类)。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或者[a-c]。第一个自负如果是则表示取反,如[abc]表示不是abc的其他字符。所有的特殊字符在字符集中都失去其原有的特殊含义。在字符集中如果要使用]、-或,可以在前面加上反斜杠或者把]、-放在第一个字符,把放在非第一个字符。 a[bcd]e abe
\d 数字:[0-9] a\dc a1c
\D 非数字: [^\d] a\Dc abc
\s 空白字符: [<空格>\t\r\n\f\v] a\sc a c
\S 非空白字符:[^\s] a\Sc abc
\w 单词字符: [A-Za-z0-9_] a\wc abc
\W 非单词字符: [^\w] a\Wc a c
* 匹配前一个字符0或者无限次 abc abccccc
+ 匹配前一个字符1次或者无限次 abc abc
? 匹配前一个字符0次或者1次 abc ab
{m} 匹配前一个字符m次 ab{2}c abbc
{m, n} 匹配前一个字符m至n次。m核n都可以省略,m省略表示m为0,n省略表示n为无限 ab{1, 2}c abc
^ 匹配字符串开头。在多行模式中匹配每一行的开头。 ^abc abc
$ 匹配字符串末尾。在多行模式中匹配每一行的末尾。 abc$ abc
\A 仅匹配字符串开头 \Aabc abc
\Z 仅匹配字符串末尾 abc\Z abc
\b 匹配\w和\W之间 a\b!bc a!bc
\B [^\b] a\Bbc abc
代表左右表达式任意匹配一个 abc|def abc
(...) 被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的做括号'(',编号+1。另外,分组表达式作为一个整体,可以后接数量词。表达式中的|尽在改组中有效 (abc){2}a(123|456)c abcabca123c
(?P...) 分组,除了原有的编号外再指定一个额外的别名 (?Pabc){2} abcabc
引用编号为的分组匹配到的字符串 (\d)abc\1 1abc1
(?P=name) 引用别名为的分组匹配到的字符串 (?P\d)abc(?P=id) 1abc1
(?:...) (...)的不分组版本,用于使用‘|’或后接数量词 (?:abc){2} abcabc
(?!Lmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头可选多个。匹配模式将在下文中介绍 (?!)abc AbC
(?=...) 之后的字符串内容需要匹配表达式才能匹配成功匹配。不消耗字符串内容 a(?=\d) 后面是数字的a
(?#...) #后的内容将作为注释被忽略 abc(?#commet) 123 abc123
(?!...) 之后的字符串内容需要不匹配表达式才能匹配成功匹配。不消耗字符串内容 a(?!\d) 后面不是数字的a
(?<=...) 之后的字符串内容需要匹配表达式才能匹配成功匹配。不消耗字符串内容 (?<=\d)a 前面是数字的a
(? 之后的字符串内容需要不匹配表达式才能匹配成功匹配。不消耗字符串内容 (? 前面不是数字的a
(?(id/name)yes-pattern|no-pattern) 如果编号为id/别名为name的组匹配到字符,则需要匹配yes-pattern, 否则需要匹配no-pattern。|no-pattern可以省略 | (\d)abc(?(1)\d|abc 1abc2

你可能感兴趣的:(Python正则表达式)