• python正则表达式(二)


    二、re特殊字符

    符号描述
    .匹配任何字符换行符除外
    ^匹配字符串的开始
    $匹配字符串末尾或字符串末尾换行符之前
    *匹配前面RE的0个或更多(贪婪)重复。贪婪意味着它将匹配尽可能多的重复
    +匹配前面RE的1次或多次(贪婪)重复
    匹配前面RE0或1(贪婪)次
    *?, +?, ??*,+,? 三个特殊字符的非贪婪版本
    {m,n}匹配前面RE的m到n次重复(贪婪)
    {m,n}?匹配前面RE的m到n次重复(非贪婪)
    \\转义特殊字符或向特殊序列发送信号
    []

    表示一组字符。第一个字符为“^”表示互补集

    |A|B, 创建匹配A或B的RE
    (...)匹配括号内的RE
    (?aiLmsux)为RE设置A、I、L、M、S、U或X标志
    (?:...)括号的非分组版本
    (?P...)可以通过名称访问组匹配的子字符串
    (?P=name)匹配之前由组名称匹配的文本
    (?#...)注释信息,里面的内容会被忽略
    (?=...)匹配如果后面存在某某文本,但是不消费字符串
    (?!...)匹配如果后面不存在某某文本
    (?<=...)匹配当前位置之前是某某文本
    (?匹配当前位置之前不是某某文本
    (?(id/name)yes|no)如果给定的id/name存在,则匹配yes模式,否则匹配no模式,no模式可以忽略
    \number匹配分组的内容,每个括号是一个分组,从1开始编号,\1表示匹配第一个分组
    \A匹配字符串的开始
    \Z匹配字符串的结尾
    \b匹配空字符串,但仅在单词的开头或结尾
    \B匹配空字符串,但不在单词的开头或结尾
    \d

    匹配任何十进制数字

    \D匹配任何非数字字符
    \s匹配空白字符
    \S匹配非空白字符
    \w匹配数字字母下划线
    \W匹配非数字字母下划线

    1、. 

    用途: 匹配任何字符除了换行符

    示例:

    2、^ 

    用途: 匹配字符串的开始位置

    示例:

    3、$ 

    用途: 匹配字符串的结束位置

    示例:

    4、* 

    用途: 匹配前面的表达式0次或多次(贪婪)

    示例:

    5、+ 

    用途: 匹配前面的表达式1次或多次(贪婪)

    示例:

    6、? 

    用途: 匹配前面的表达式0次或1次(贪婪)

    示例:

    7、*? 

    用途: 匹配前面的表达式0次或1次(非贪婪)

    示例:

    8、+? 

    用途: 匹配前面的表达式1次或多次(非贪婪)

    示例:

    9、?? 

    用途: 匹配前面的表达式0次或1次(贪婪)

    示例:

    10、{m,n}

    用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(贪婪)

    示例:

    11、{m,n}?

    用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(非贪婪)

    示例:

    12、\\

    用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(非贪婪)

    示例:

    13、[]

    用途: 表示一组字符集合,匹配所包含的任意一个字符。第一个字符为“^”表示互补集

    示例:

    14、|

    用途: A|B, 创建匹配A或B的RE

    示例:

    15、(...)

    用途: 匹配括号内的RE

    示例:

    16、(?aiLmsux)

    用途: 为RE设置A、I、L、M、S、U或X标志,等价于re.I  re.A 等

    示例:

    17、(?:...)

    用途: 括号的非分组版本,该分组所匹配的子字符串 不能 在执行匹配后被获取或是在之后的模式中被引用

    示例:

    18、(?P...)

    用途: 可以通过名称访问组匹配的子字符串, 指定名称后数据索引依然有效

    示例:

    19、(?P=name)

    用途: 匹配之前由组名称匹配的文本

    示例:

    20、(?#...)

    用途: 注释信息,里面的内容会被忽略

    示例:

    21、(?=...)

    用途: 匹配如果后面存在某某文本,但是不消费字符串

    示例:

    22、(?!...)

    用途: 匹配如果后面不存在某某文本

    示例:

     

    23、(?<=...)

    用途: 匹配当前位置之前是某某文本

    示例:

     

    24、(?

    用途: 匹配当前位置之前不存在某某文本

    示例:

    25、(?(id/name)yes|no)

    用途:如果给定的id/name存在,则匹配yes模式,否则匹配no模式,no模式可以忽略, 其中id和name是分组id和指定的分组名name

    示例:

     PS:这个比较难理解, 希望大家仔细思考一下。

    26、\number

    用途:匹配分组的内容,每个括号是一个分组,从1开始编号,\1表示匹配第一个分组

    示例:

     剩下的比较简单,此处略过,感兴趣的同学可以自己去试试。

  • 相关阅读:
    Qt QList类和QLinkedList类 详解
    @Elasticsearch之深度应用及原理剖析--Filter过滤机制剖析(bitset机制与caching机制)
    Libuv的安装及运行使用
    【C++】哈希对unordered_map和unodered_set的封装
    JIRA8.15.X升级JIRA8.20.X流程概述(适用于其他版本)
    ElasticSearch-Mapping详解
    车载ECU嵌入式设备的诊断测试 – 读和写
    python练习题(慕课配套,三四五章)
    100-150
    Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析
  • 原文地址:https://blog.csdn.net/yongche_shi/article/details/127294782