正则表达式学习

正则表达式学习

Python re模块

img

re常量

常量即表示不可更改的变量,一般用于做标记。

  1. IGNORECASE

    • 语法: re.IGNORECASE 或简写为 re.I
    • 作用: 进行忽略大小写匹配。
  2. ASCII

    • 语法: re.ASCII 或简写为 re.A
    • 作用: 顾名思义,ASCII表示ASCII码的意思,让 \w, \W, \b, \B, \d, \D, \s\S 只匹配ASCII,而不是Unicode。
  3. DOTALL

    • 语法: re.DOTALL 或简写为 re.S
    • 作用: DOT表示.,ALL表示所有,连起来就是.匹配所有,包括换行符\n默认模式下.是不能匹配行符\n
  4. MULTILINE

    • 语法: re.MULTILINE 或简写为 re.M

    • 作用: 多行模式,当某字符串中有换行符\n,默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。

      正则表达式中^表示匹配行的开头,默认模式下它只能匹配字符串的开头;而在多行模式下,它还可以匹配 换行符\n后面的字符。

      注意:正则语法中^匹配行开头、\A匹配字符串开头,单行模式下它两效果一致,多行模式下\A不能识别\n

  5. VERBOSE

    • 语法: re.VERBOSE 或简写为 re.X
    • 作用: 详细模式,可以在正则表达式中加注解!
  6. LOCALE(不常用)

    • 语法: re.LOCALE 或简写为 re.L
    • 作用: 由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配,这个标记只能对byte样式有效。这个标记官方已经不推荐使用,因为语言区域机制很不可靠,它一次只能处理一个 “习惯”,而且只对8位字节有效。
  7. UNICODE

    • 语法: re.UNICODE 或简写为 re.U
    • 作用: 与 ASCII 模式类似,匹配unicode编码支持的字符,但是 Python 3 默认字符串已经是Unicode,所以有点冗余。
  8. DEBUG

    • 语法: re.DEBUG
    • 作用: 显示编译时的debug信息。
  9. TEMPLATE

    • 语法: re.TEMPLATE 或简写为 re.T
    • 作用:源码注释中写着:disable backtracking(禁用回溯)

re函数

查找匹配项

  • search:查找任意位置的匹配项
  • match:必须从字符串开头匹配
  • fullmatch:整个字符串与正则匹配

查找多个匹配项

  • findall:从字符串任意位置查找,返回一个列表
  • finditer:从字符串任意位置查找,返回一个迭代器

分割

  • re.split(pattern, string, maxsplit=0, flags=0) 函数:用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,既re常量

替换

  • re.sub(pattern, repl, string, count=0, flags=0) 函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量。
  • re.subn(pattern, repl, string, count=0, flags=0) 函数与 re.sub函数 功能一致,只不过返回一个元组 (字符串, 替换次数)。

编译正则对象

以下将正则表达式的样式编译为一个 正则表达式对象

  • compile函数
  • template函数

其他

  • **re.escape(pattern)**:可以转义正则表达式中具有特殊含义的字符,比如:. 或者 *
  • re.purge() :清除 正则表达式缓存

参考链接

Python正则表达式,这一篇就够了! - 知乎 (zhihu.com)


匹配模式

多种匹配模式

实例 描述
[Pp]ython 匹配 “Python” 或 “python”。
rub[ye] 匹配 “ruby” 或 “rube”。
[abcdef] 匹配中括号内的任意一个字母。
[0-9] 匹配任何数字。类似于 [0123456789]。
[a-z] 匹配任何小写字母。
[A-Z] 匹配任何大写字母。
[a-zA-Z0-9] 匹配任何字母及数字。
[^au] 除了au字母以外的所有字符。
[^0-9] 匹配除了数字外的字符。

实例 描述
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
? 匹配一个字符零次或一次,另一个作用是非贪婪模式
+ 匹配1次或多次
* 匹配0次或多次
\b 匹配一个长度为0的子串
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
\b 匹配一个长度为0的子串
作者

bd160jbgm

发布于

2021-11-07

更新于

2021-11-27

许可协议