正则表达式
- 用途:对字符串按照某种规则进行检索、替换
基本语法
-
元字符:
-
.
: 可以用来表示除了换行符之外的任一字符 -
[abc]
: 字符集,可以用来表示字符集中的任一字符 -
[^abc]
: 字符集,表示除了字符集外的任一字符 -
[a-z]
: 字符范围,表示a-z范围内的任一字符 -
[^a-z]
: 字符范围,表示除了a-z之外的任一字符 -
\d
: 表示0-9范围内的任一数字,==[0-9] -
\D
: 表示除了0-9之外的任一字符,==[^0-9] -
\s
: 表示所有的空白字符 -
\S
: 表示除了空白字符外的任一字符 -
\w
: ==[a-zA-Z0-9_] -
\W
: ==[^a-zA-Z0-9_] -
\b
: 表示匹配单词的边界 -
\B
: 表示不匹配单词的边界 -
^
: 表示字符串的行首 -
$
: 表示字符串的行尾
-
注意:如果在正则表达式中有特殊意义,在使用时需要使用转义符
-
字符重复
-
*
: 表示前面的字符可以重复至少0次 -
+
: 表示前面的字符可以重复至少1次 -
?
: 表示前面的字符可以重复0次或者1次 -
{n}
: 表示前面的字符重复n次 -
{n,}
: 表示前面的字符重复至少n次 -
{m,n}
: 前面的字符重复次数区间为:[m,n]
-
注意:字符的重复是指模式的重复
-
分组与断言
-
x|y
: 表示匹配x或者y -
(pattern)
: 表示一个分组,自动按顺序给编号 -
\num
: 表示引用标号为num的分组(引用内容不是模式) -
(?:pattern)
: 取消分组,表示括号用于指定优先级 -
(?<name>pattern)
: 命名分组,python中使用(?P<name>pattern)
-
f(?=pattern)
: 表示在f后一定有pattern -
(?<=pattern)f
: 表示在f前一定有pattern -
f(?!pattern)
: 表示在f后一定没有pattern字符 -
(?<!pattern)f
: 表示在f前一定没有pattern字符
-
注意:断言不是分组,不占用分组号,相当于一个判定条件
-
引擎选项
-
re.I
: 表示忽略大小写 -
re.M
: 表示多行模式 -
re.S
: 表示单行模式 -
re.X
: 表示忽略表达式中的空白符
-
注意:单行模式时,'.'符号可以匹配所有字符(包括换行符)