zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/ColleenHe/p/11578231.html
Copyright © 2011-2022 走看看