Python正则表达式

Python的re模块

前言

学习《集体智慧编程》的过程中,在第三章遇到处理 RSS 订阅源并将 HTML 标记剥离提取文字的函数,用到了 re 模块,对照 python3.7 关于 re 的官方文档看一下,具体的学习还要看一下《精通正则表达式》。

正则表达式语法

  1. 正则表达式可以拼接:若 A、B 都是正则表达式,那么 AB 也是正则表达式;若字符串 p 匹配 A 并且字符串 q 匹配 B,那么 pq 可以匹配 AB。

  2. 正则表达式包含普通和特殊字符。特殊字符如 '|' 或 '(',既可以表示普通含义也可以包含正则表达式的解释;重复修饰符 (*, +, ?, {m,n}, 等) 不能直接嵌套,要应用一个内层重复嵌套,可以使用括号。

  3. 特殊字符

    字符 意义
    . 匹配除了换行的任意字符
    ^ 匹配字符串开头
    $ 匹配字符串尾或换行符前一个字符
    * 对它前面的正则式匹配 0 到任意次重复
    + 对它前面的正则式匹配 1 到任意次重复
    对它前面的正则式匹配 0 到 1 此重复
    *?, +?, ?? 在修饰符之后添加 ? 将使样式以非贪婪方式或最小方式匹配
    {m} 对其之前的正则式指定匹配 m 个重复;少于 m 会匹配失败
    {m,n} 对正则式进行 m 到 n 此匹配;在 m 和 n之间取尽量多,但不能少于 m 或大于 n
    {m,n}? 非贪婪模式,匹配尽量少的字符次数
    转义特殊字符;高度推荐,就算最简单的表达式也要使用原始字符串 (r'raw')
    [] 表示一个字符集合。在一个集合中:
    字符可以单独列出,如 [amk] 匹配 'a','m','k'
    可以表示字符范围,[a-z]、[0-5][0-9]匹配从 00 到 59 的两位数
    特殊字符在集合中失去特殊含义,只是普通字符
    字符类如 w 或 s 在集合可以被接受
    对集合取反可以匹配不在集合的字符,[^5]将匹配所有字符,除了 5 。

模块内容

  1. re.compile(pattern, flags=0)

    将正则表达式的样式编译为一个正则表达式对象(正则对象),可以用于匹配,通过这个对象的方法 match(), search() 等

  2. re.search(pattern, string, flags=0)

    检查字符串任意位置,找到匹配样式的第一个位置,返回相应的匹配对象

  3. re.match(pattern, string, flags=0)

    检查字符串开头是否匹配样式

  4. re.split(pattern, string, maxsplit=0, flags=0)

    用 pattern 分开 string,最多进行 maxsplit 次分隔

  5. re.sub(pattern, repl, string, count=0, flags=0)

    使用 repl 替换 string 中满足 pattern 的字符

正则对象

编译后的正则表达式对象支持search、match等方法,用法如上

匹配对象

match.group()

原文地址:https://www.cnblogs.com/ColleenHe/p/11578231.html