• 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表示匹配第一个分组

    示例:

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

  • 相关阅读:
    Ubuntu22.04安装Git LFS
    Nature工作-通用时序(PHM)大模型//(构思中)
    QProcess 调用 ffmpeg来处理音频
    【网络安全 --- 工具安装】Centos 7 详细安装过程及xshell,FTP等工具的安装(提供资源)
    linux内核分析:内存映射,文件系统
    微服务架构终极指南
    基于javaweb+jsp的客户关系管理系统CRM(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
    Python脚本:让工作自动化起来
    Android 包体积优化(未完成)
    学生HTML网页作业:基于HTML+CSS+JavaScript画家企业8页
  • 原文地址:https://blog.csdn.net/yongche_shi/article/details/127294782