一张思维导图,让正则表达式不再难懂

简介:

一张精彩的导图

导图内容解析

  • 语法结构
  • 字符
    • 普通字符:字母、数字、汉字、下划线,匹配与之相同的一个字符
    • 简单转义字符:\n(换行),\t(制表),\\(\本身)和 \^...(\^等有特殊作用的符号如要匹配自己的话要用转义)
    • 标准字符集合
      注意区分大小写,大写是相反的意思,匹配相反是不匹配
      • \d
        任意一个数字,0~9
      • \w
        任意一个字母、数字、汉字或下划线,A~Z、a~z、0~9、_和任意一个汉字
      • \s
        任意空白符,包括空格、制表符、换行符
      • .
        小数点可以匹配任意一个字符,换行除外(如果要匹配包括"\n"在内的所有字符,一般用[\s\S])
    • 自定义字符集合
      [ ]方括号匹配方式,能够匹配方括号中的任意一个字符,^表示取反
      • [ab5@]
        匹配"a"或"b"或"5"或"@"
      • [^abc]
        匹配a、b、c之外的任意字符
      • [f-k]
        匹配“f"到"k"之间的字符
      • [^A-F0-3]
        匹配“A"-"F","0"-"3"之外的任意一个字符
  • 量词(Quantifier)
    修饰前面的一个表达式,如果要修饰多个表达式,就用( )把表达式包起来
    • {n}
      表达式重复n次
    • {m,n}
      表达式至少重复m次,最多重复n次
      • 贪婪模式 (默认)
        匹配符合的最长的字符串
      • 非贪婪模式 (在量词后面加 ? 例:{m,n}? )
        匹配符合的最短的字符串
    • {m,}
      表达式至少重复m次

    • 匹配表达式0或1次,相当于{0,1}
    • +
      表达式至少出现一次,相当于{1,}
    • *
      表达式不出现或出现任意次,相当于{0,}
  • 字符边界
    零宽:匹配的不是字符而是位置,符合某种条件的位置
    • ^
      与字符串开始的地方匹配
    • $
      与字符串结束的地方匹配
    • \b
      匹配一个单词的边界,当前位置前面的字符和后面的字符不全是\w
  • 预搜索(零宽断言、环视)
    零宽:匹配的不是字符而是位置,符合某种条件的位置
    • (?=exp)
      断言自身出现的位置的后面能匹配表达式exp
    • (?!exp)
      断言自身出现的位置的后面不能匹配表达式exp
    • (?<=exp)
      断言自身出现的位置的前面能匹配表达式exp
    • (?<!exp)
      断言自身出现的位置的前面不能匹配表达式exp
  • 匹配模式
    对文本的处理方式
    • IGNORECASE 忽略大小写模式
      • 匹配时忽略大小写
      • 默认是区分大小写的
    • SINGLELINE 单行模式
      • 整个文本看作一个字符串,只有一个开头一个结尾
      • 使小数点"."可以匹配包含换行符(\n)在内的任意字符
    • MULTILINE 多行模式
      • 每行都是一个字符串
      • 在多行模式下,如果需要仅匹配字符串开始和结束位置,可以使用\A和\Z
  • 选择符和分组
    分支结构、捕获组合非捕获组
    • | 分支结构
      左右表达式之间“或”关系,匹配左边或右边
    • ( ) 捕获组
      • (1)、在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
      • (2)、取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
      • (3)、每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号。捕获编号为零的第一个捕获是整个正则表达式模式匹配的文本
      • 反向引用:通过反向引用,可以对分组已捕获的字符串进行引用。
    • (?:Expression) 非捕获组
      一些表达式中,不得不使用(),但又不需要保存()中子表达式匹配的内容,这时可以用非捕获组来抵消()带来的副作用。

本文作者:java思维导图
来源:51CTO
相关文章
|
关系型数据库 数据库 PostgreSQL
mac电脑上docker中安装postgresql
前言: docker真是一个好东西,是码农开发调试的神器,以前还要自己配置开发、测试环境,安装过程繁琐,容易出错,耗时很多,用docker基本能够在5分钟搞定,而且一次配置,每个环境都能够无差别部署,省时省力。
5353 0
|
人工智能 NoSQL 数据可视化
n8n:16万Star超明星项目的架构解读
n8n从单体架构逐步演进为企业级集成平台,具备AI集成能力,适用于自动化场景,成为iPaaS领域的优选方案。
384 0
n8n:16万Star超明星项目的架构解读
|
4月前
|
人工智能 算法 PyTorch
算力不一定越猛越好:聊聊 AI 设备的低功耗算力优化这条现实之路
算力不一定越猛越好:聊聊 AI 设备的低功耗算力优化这条现实之路
242 10
|
4月前
|
人工智能 自然语言处理 算法
AI 英语学习 APP的开发
开发AI英语学习APP进入“智能体时代”:打造听、说、读、写全交互系统。涵盖虚拟外教、写作教练、自适应阅读与多维报告,结合国产大模型与语音技术,实现低延迟、高合规的个性化学习体验。(238字)
|
4月前
|
传感器 人工智能 运维
制造业人工智能技术应用现状全景解析:从车间实操到战略落地的完整指南
凌晨三点,电子厂贴片机突现故障,AI运维系统却早已提前12小时预警。从被动抢修到智能预判,人工智能正重塑制造业:降本增效、预测维护、柔性生产。无论大厂小厂,AI已成生存刚需。实在Agent等轻量工具更让中小工厂轻松迈入智能时代。
752 0
|
11月前
|
人工智能 小程序 安全
《Discuz! X3.5深度开发与商业实践》终极指南优雅草卓伊凡
《Discuz! X3.5深度开发与商业实践》终极指南优雅草卓伊凡
260 10
《Discuz! X3.5深度开发与商业实践》终极指南优雅草卓伊凡
|
8月前
|
安全 IDE 开发工具
错误代码0xc0000001如何处理?
错误代码0xc0000001是Windows系统启动时常见的故障,通常由系统文件损坏、硬件问题或驱动冲突引起。以下是综合解决方案:
|
8月前
|
存储 安全 数据中心
数据中心概述
数据中心是包含计算机系统、通信设备及配套环境控制、安全装置的复杂设施,用于集中存储、处理和传输数据。根据用途可分为企业、运营商和互联网数据中心。其基础设施涵盖机房、供电、散热、网络设备及管理软件。发展历程从大型机时代逐步演进至云计算时代,现以大规模、资源池化为特征。
948 0
|
机器学习/深度学习 人工智能 开发者
阿里云 AI 搜索开放平台新发布:增加 QwQ 模型
阿里云 AI 搜索开放平台 新增加 QwQ 模型,将为企业和开发者带来更强大的搜索解决方案。
677 11
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
644 0