正则表达式不再难懂

简介: 正则表达式转载至《正则表达式思维导图,不再难懂》(推荐手机阅读)导图内容解析 工具 RegexBuddy 语法结构 字符 [ab5@] 匹配"a"...

正则表达式

转载至《正则表达式思维导图,不再难懂》(推荐手机阅读)

导图内容解析

  • 工具

    • RegexBuddy

  • 语法结构

  • 字符

    • [ab5@]
      匹配"a"或"b"或"5"或"@"

    • [^abc]
      匹配a、b、c之外的任意字符

    • [f-k]
      匹配“f"到"k"之间的字符

    • [^A-F0-3]
      匹配“A"-"F","0"-"3"之外的任意一个字符

    • \d
      任意一个数字,0~9

    • \w
      任意一个字母、数字、汉字或下划线,A~Z、a~z、0~9、_和任意一个汉字

    • \s
      任意空白符,包括空格、制表符、换行符

    • .
      小数点可以匹配任意一个字符,换行除外(如果要匹配包括"\n"在内的所有字符,一般用[\s\S])

    • 普通字符:字母、数字、汉字、下划线,匹配与之相同的一个字符

    • 简单转义字符:\n(换行),\t(制表),\\(\本身)和 \^...(\^等有特殊作用的符号如要匹配自己的话要用转义)

    • 标准字符集合
      注意区分大小写,大写是相反的意思,匹配相反是不匹配

    • 自定义字符集合
      [ ]方括号匹配方式,能够匹配方括号中的任意一个字符,^表示取反

  • 量词(Quantifier)
    修饰前面的一个表达式,如果要修饰多个表达式,就用( )把表达式包起来

    • 贪婪模式 (默认)
      匹配符合的最长的字符串

    • 非贪婪模式 (在量词后面加 ? 例:{m,n}? )
      匹配符合的最短的字符串

    • {n}
      表达式重复n次

    • {m,n}
      表达式至少重复m次,最多重复n次

    • {m,}
      表达式至少重复m次


    • 匹配表达式0或1次,相当于{0,1}

    • +
      表达式至少出现一次,相当于{1,}

    • *
      表达式不出现或出现任意次,相当于{0,}

  • 字符边界
    零宽:匹配的不是字符而是位置,符合某种条件的位置

    • ^
      与字符串开始的地方匹配

    • $
      与字符串结束的地方匹配

    • \b
      匹配一个单词的边界,当前位置前面的字符和后面的字符不全是\w

  • 预搜索(零宽断言、环视)
    零宽:匹配的不是字符而是位置,符合某种条件的位置

    • (?=exp)
      断言自身出现的位置的后面能匹配表达式exp

    • (?!exp)
      断言自身出现的位置的后面不能匹配表达式exp

    • (?<=exp)
      断言自身出现的位置的前面能匹配表达式exp

    • (?<!exp)
      断言自身出现的位置的前面不能匹配表达式exp

  • 匹配模式
    对文本的处理方式

    • 每行都是一个字符串

    • 在多行模式下,如果需要仅匹配字符串开始和结束位置,可以使用\A和\Z

    • 整个文本看作一个字符串,只有一个开头一个结尾

    • 使小数点"."可以匹配包含换行符(\n)在内的任意字符

    • 匹配时忽略大小写

    • 默认是区分大小写的

    • IGNORECASE 忽略大小写模式

    • SINGLELINE 单行模式

    • MULTILINE 多行模式

  • 选择符和分组
    分支结构、捕获组合非捕获组

    • (1)、在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰

    • (2)、取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

    • (3)、每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号。捕获编号为零的第一个捕获是整个正则表达式模式匹配的文本

    • 反向引用:通过反向引用,可以对分组已捕获的字符串进行引用。

    • | 分支结构
      左右表达式之间“或”关系,匹配左边或右边

    • ( ) 捕获组

    • (?:Expression) 非捕获组
      一些表达式中,不得不使用(),但又不需要保存()中子表达式匹配的内容,这时可以用非捕获组来抵消()带来的副作用。

目录
相关文章
|
2天前
|
人工智能 运维 安全
|
4天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
383 124
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
|
7天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
670 107
|
1天前
|
算法 Python
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
221 152
|
3天前
|
Java 数据库 数据安全/隐私保护
Spring 微服务和多租户:处理多个客户端
本文介绍了如何在 Spring Boot 微服务架构中实现多租户。多租户允许单个应用实例为多个客户提供独立服务,尤其适用于 SaaS 应用。文章探讨了多租户的类型、优势与挑战,并详细说明了如何通过 Spring Boot 的灵活配置实现租户隔离、动态租户管理及数据源路由,同时确保数据安全与系统可扩展性。结合微服务的优势,开发者可以构建高效、可维护的多租户系统。
200 127
|
3天前
|
Web App开发 前端开发 API
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
230 124
|
1天前
|
编解码 算法 自动驾驶
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
172 125
|
1天前
|
JavaScript 关系型数据库 MySQL
基于python的网上外卖订餐系统
本系统基于Python与Flask框架,结合MySQL数据库及Vue前端技术,实现了一个功能完善的网上订餐平台。系统涵盖餐品、订单、用户及评价管理模块,并深入研究订餐系统的商业模式、用户行为与服务质量。技术上采用HTML、PyCharm开发工具,支持移动端访问,助力餐饮业数字化转型。