• 正则表达式regex


    元字符

    字符描述字符描述
    转义符    
    d digit匹配数字=[0-9] D 非数字
    w word匹配字母、数字、下划线。等价于'[A-Za-z0-9_]' W 非字母数字下划线
    s 空格,换行符,制表符 S 非空白
    table专门表示制表符    
    专门表示换行符    
    . 除了换行符之外的任意内容    
    [] 字符组 [^] 非字符组
    ^ 以……开头 $ 以……结尾
    | 或(逻辑单位) abc|ab 如果两个规则有重叠,长在前,短在后
    () 分组:把一部分正则规定为一组 限定|的作用域 限定一组正则的量词约束

    量词:约束字符出现的次数

    量词描述
    {n} 前面字符只出现n次数
    {n,} 至少出现n次
    {n,m} 至少出现n次,至多出现m次
    匹配0次或1次 ?前面的字符出现0次或1次都行
    + 匹配1次或多次
    * 匹配0次或多次
    d(.d+)? 小数或整数

    如图:

    默认贪婪匹配,总是在符合量词条件的范围内尽可能多的匹配。【回溯算法:找到结尾,再回找要求的条件】

    非贪婪匹配(惰性匹配):总是匹配符合条件范围内尽量小的

    在量词后加?
    +?尽量少的取,
    +?3   一旦遇到3则匹配结束
    
    元字符 量词 ?x
    表示按照元字符规则在量词的范围内匹配,一旦遇到x就停止
    
    #重点
    .*?x 匹配任意内容的任意多次,一旦遇到x则停止 
    先判断是否是x,如果是就结束,如果不是,则继续

    分组

    分组命名
          语法:(?P<组名>正则表达式)
    
    引用分组
         语法:(?P=组名)
       引用分组,表示这个组中的内容与之前匹配的内容完全一致
    1,匹配第一个分组中的内容,使用时需要在字符串前加r转义

    ?的作用

    1.量词:
        ?,匹配0次或1次
    2.非贪婪匹配,?放在量词后
        元字符量词?————>在量词范围内,尽量少的取
        .*?x 匹配任意内容的任意多次,一旦遇到x则停止
    3.分组
        分组命名:(?P<组名>)
        引用分组:(?P=组名)
        取消分组优先:(?:正则表达式)
  • 相关阅读:
    用tar命令把目标压缩包解压到指定位置
    testing and Deployment
    项目第二阶段进展
    注解使用中 @RequestMapping 和 @GetMapping @PostMapping 区别
    导入项目之最多的问题
    0 for前端之数据交互
    Required String parameter 'xxxxx' is not present] 报错400
    CDI Features
    初始化数据库问题
    mysql的时区问题
  • 原文地址:https://www.cnblogs.com/qimingming/p/12116043.html
Copyright © 2020-2023  润新知