复习下以前学习的正则表达式
匹配文本字面值ABC
匹配ABC
r = re.match('ABC', 'ABC')
print(r) # <_sre.SRE_Match object; span=(0, 3), match='ABC'>
|
r = re.match('ABC|BCD', 'BCD')
print(r) # <_sre.SRE_Match object; span=(0, 3), match='BCD'>
.
匹配任意字符(除了\n
, flags 可以设置 DOTALL 来取消这个限制)
^
(或者\A
, 有些国家的键盘不支持脱字符 ^) 以任意字符串开头的. ^cai
匹配任意以 cai 开头的字符串,
$
(或者\Z
) 以任意字符串结尾的, cai$
匹配任意以 cai 结尾的字符串\b
和\B
则是用来匹配字符边界, \bcai
以 cai 开头的字符串, \bcai\B
独立的 cai 字符串, \Bcai
不以 cai 开头的字符串[]
, [aeiou]
表示匹配 a e i o u 任一字符, c[abc]i
匹配 cai cbi cci^
则表示与非括号内的字符匹配, [^a-z] 不匹配 a 到 z 的小写字母, [“-a] 表示 ASCII 码中的 34-97, 具体参考 ASCII 表*
匹配之前的表达式 0 次或者多次+
匹配之前的表达式 1 次或者多次?
匹配之前的表达式 0 次或者 1 次{}
次数匹配, {5}
匹配前面的表达式 5 次, {1, 5}
匹配前面的表达式 1 到 5 次均可, [0-9]{15, 16} 匹配 15 或者 16 位数字(例如信用卡号码)?
表示非贪婪模式python3 中目前不支持侵占模式(Possessive)
\d
与 [0-9]
一致, 与 \D
相反\w
与[A-Za-z0-9_]
一致, 与\W
相反\s
与匹配任何空格字符, 与[\n\t\r\v\f]
(\n
换行符, \t
水平制表符, \v
垂直制表符, \r
回车符, \f
换页符)\b
边界符, 匹配任何单词边界\c
匹配特殊字符, 如 \ . ,
(iLmsux)
分组中可以设置模式,iLmsux之中的每个字符代表一个模式,具体和上一章的模式相关(?:...)
分组的不捕获模式,计算索引时会跳过这个分组(?P...)
分组的命名模式,取此分组中的内容时可以使用索引也可以使用name(?P=name)
分组的引用模式,可在同一个正则表达式用引用前面命名过的正则(?#...)
注释(?<=Expression)
逆序肯定环视,表示所在位置左侧能够匹配Expression(? 逆序否定环视,表示所在位置左侧不能匹配Expression
(?=Expression)
顺序肯定环视,表示所在位置右侧能够匹配Expression(?!Expression)
顺序否定环视,表示所在位置右侧不能匹配Expression(?(id/name)Y/N)
如果 id 或者 name 存在就匹配 Y, 如果不存在就匹配 N