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

01

一张思维导图

02

导图内容解析

  • 工具
    • 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) 非捕获组 一些表达式中,不得不使用(),但又不需要保存()中子表达式匹配的内容,这时可以用非捕获组来抵消()带来的副作用。

原文发布于微信公众号 - java思维导图(java-mindmap)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏进击的君君的前端之路

正则表达式

17850
来自专栏北京马哥教育

Python数据类型知识点全解

作者:zhang_derek 1.字符串 字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 ...

30750
来自专栏张俊红

python数据分析学习笔记—python基础知识

python数据分析学习笔记系列——基础知识篇 总第44篇 ▼ ? 基本概念 1、数 在Python中有4种类型的数——整数、长整数、浮点数和复数。一般我们默认...

38050
来自专栏Python爬虫实战

Python数据类型之数字类型

输入1就会显示1,我们怎么知道1就是整数类型呢?在Python里面有一个type()函数,它能告诉我们所代表的类型。

14220
来自专栏烂笔头

Python标准库(1) — itertools模块

目录[-] 简介 官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数。...

32160
来自专栏C/C++基础

正则表达式简介

正则表达式(Regular Expression),又称规则表达式,在代码中常简写作regex、regexp或RE。正则表达式通常用来检索、替换那些符合某个模式...

10840
来自专栏zingpLiu

leetcode【14题】Longest Common Prefix

  Write a function to find the longest common prefix string amongst an array of ...

12940
来自专栏Esofar 开发日记

JavaScript权威指南 - 数组

JavaScript数组是一种特殊类型的对象。 JavaScript数组元素可以为任意类型,最大容纳232-1个元素。 JavaScript数组是动态的,有...

9440
来自专栏java一日一条

JavaScript 中对象的深拷贝

在JavaScript中,对对象进行拷贝的场景比较常见。但是简单的复制语句只能对对象进行浅拷贝,即复制的是一份引用,而不是它所引用的对象。而更多的时候,我们希望...

10120
来自专栏Python小屋

Python扩展库numpy中的布尔运算

首先解答上一篇文章Win10系统配置Python3.6+OpenGL环境详细步骤中的问题。该问题的答案为[2, 2],要点在于列表对象的方法index()默认是...

33990

扫码关注云+社区

领取腾讯云代金券