概述
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。主要是用来做文本的复杂处理。
基础
1、标准字符集合
标 签 | 作用 |
---|---|
d | 任意一个数字,0-9中任意一个 |
D | 除了数字,大写标识相反的意思 |
w | 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]” |
s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ fnrtv] |
. | 可以匹配任意字符 |
2、自定义字符集合
[] 方括号匹配方式,能够匹配方括号内的任意字符
符号 | 作用 |
---|---|
[12A] | 匹配“1”,“2”,“A” |
1 | 匹配“a”,“b”,“c”之外的字符 |
[f-k] | 匹配f到k之间的任意一个字符 |
2 | 匹配除A到F,0到3之外的字符或数字 |
3、修饰匹配次数的特殊符号
符号 | 作用 |
---|---|
{n} | 表达式重复n次 |
{m,n} | 表达式至少重复m次,至多重复n次 |
{m,} | 表达式至少重复m次 |
? | 匹配表达式0次或者1次,相当于{0,1} |
- | 表达式至少出现一次,相当于{1,}
- | 表达式至少出现零次,相当于{0,}
4、贪婪模式和非贪婪模式
贪婪模式:匹配的符合表达式的字符越多越好;
非贪婪模式:匹配字符越少越好,匹配的字符后加“?”修饰。
5、模式匹配
- 忽略大小写
- 单行模式
整个文本看作一个字符串 - 多行模式
文本按照行区分
6、字符边界
标题1 | 标题2 |
---|---|
^ | 表示字符串开始的地方 |
$ | 表示字符串结束的地方 |
b | 匹配一个单词的边界(单词边界两边没有其它字符) |
高级
1、选择符和分组
符号 | 作用 |
---|---|
\ | 或的关系(竖线) |
() | 通过括号组织一组表达式 |
反向引用
nnn 每一对()会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号,通过反向引用,可以对分组已捕获的字符串进行引用。
2、预搜索(零宽断言)
这个位置应该符合某个条件,判断当前位置的前后字符是否符合指定的条件,但不匹配前后的字符,是对位置的匹配。
标题1 | 标题2 |
---|---|
(?=exp) | 后面匹配表达式 |
(?<=exp) | 前面匹配表达式 |
(?!exp) | 断言此位置的后面不能匹配表达式exp |
(? | 前面不能匹配表达式 |