python 正则表达式
常量
进行忽略大小写匹配
re.IGNORECASE
让 \w
, \W
, \b
, \B
, \d
, \D
, \s
和 \S
只匹配ASCII,而不是Unicode
re.ASCII
DOT表示.
,ALL表示所有,连起来就是.
匹配所有,包括换行符\n
。默认模式下.
是不能匹配行符\n
的
re.DOTALL
多行模式,当某字符串中有换行符\n
,默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。
re.MULTILINE
详细模式,可以在正则表达式中加注解!
re.VERBOSE
re模块函数
查找一个匹配项
- search: 查找任意位置的匹配项
- match: 必须从字符串开头匹配
- fullmatch: 整个字符串与正则完全匹配
查找多个匹配项
- findall: 从字符串任意位置查找,返回一个列表
- finditer:从字符串任意位置查找,返回一个迭代器
分割
re.split(pattern, string, maxsplit=0, flags=0)
用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,就是上面的常量
替换
- sub函数
- subn函数:与 re.sub函数 功能一致,只不过返回一个元组 (字符串, 替换次数)
re.sub(pattern, repl, string, count=0, flags=0)
使用 repl 替换 string中符合 pattern 的
编译正则对象
- compile函数:将正则表达式的样式编译为一个 正则表达式对象,与re模块有同样的正则函数
- template函数
其他
- r'' :去除转义字符.
- b'':表示这是一个 bytes 对象
- u'':字符串以 Unicode 格式 进行编码
- f'' :表示在字符串内支持大括号内的python 表达式
.
- 除换行符以外的所有字符。
^
- 字符串开头。
$
- 字符串结尾。
\d
,\w
,\s
- 匹配数字、字符、空格。
\D
,\W
,\S
- 匹配非数字、非字符、非空格。
[abc]
- 匹配 a、b 或 c 中的一个字母。
[a-z]
- 匹配 a 到 z 中的一个字母。
[^abc]
- 匹配除了 a、b 或 c 中的其他字母。
aa|bb
- 匹配 aa 或 bb。
?
- 0 次或 1 次匹配。
*
- 匹配 0 次或多次。
+
- 匹配 1 次或多次。
{n}
- 匹配 n次。
{n,}
- 匹配 n次以上。
{m,n}
- 最少 m 次,最多 n 次匹配。
(
*expr*)
- 捕获 expr 子模式,以 \1
使用它。
(?:
*expr*)
- 忽略捕获的子模式。
(?=
*expr*)
- 正向预查模式 expr。
(?!
*expr*)
- 负向预查模式 expr。