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()

  • 相关阅读:
    虚拟机安装Ubuntu 18.04.1 LTS教程
    Ubuntukylin-16.04.4设置root用户自动登陆
    git 删除本地分支,远程分支,创建tag
    elementui多选后无法再选择或者取消
    git分支改名oldName改为newName
    js前端流的方式下载execl
    vue实现网页导出pdf
    vue下载图片
    js原生方法 document.execCommand实现复制
    js原生方法 document.execCommand实现复制
  • 原文地址:https://www.cnblogs.com/ColleenHe/p/11578231.html
Copyright © 2011-2022 走看看