正则表达式
来自Wiki.Citydatum
正则表达式(Regular Expression,常简写为regex、regexp)是计算机科学的一个概念,表示用字符序列代表的某种文本模式,用来检索、替换那些符合这个模式(规则)的文本。
概述
模式
主流的正则引擎主要分为3类,分别为DFA,传统型NFA,POSIX NFA。其中DFA、NFA两种引擎都经历了20多年的发展,各自产生了很多变体,出台POSIX NFA规避了不必要变体的继续产生。
符号
正则表达式由普通字符和元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
元字符 | 作用 | 描述 | 示例 |
---|---|---|---|
. | 通配符 | 匹配除换行符(\n)和回车符(\r)之外的任意字符 | b.d 可匹配bed、bid、b8d等;
|
[ ] | 集合 | 匹配集合中的任意字符 | [abc] ,[123]
|
[ - ] | 范围 | 出现在两个字符之间时表示范围,匹配该范围内任意字符 | [a-z] 匹配任意小写英文字母;[1-9] 匹配任意一位正整数
|
[^ ] | 取反 | 匹配任何不在指定范围内的任意字符 | [^xyz] 匹配除x、y、z以外的任意字符
|
{m,n} | 量化 | 匹配前面的子表达式至少m次且最多n次 | a{3,5} 可匹配aaa、aaaa、aaaaa
|
? | 量化 | 匹配前面的子表达式零次或一次,等价于{0,1} |
colou?r 可匹配 color 及 colour
|
* | 量化 | 匹配前面的子表达式任意次,等价于{0,} |
ab*c 可匹配 ac、abc、abbc、abbbc等
|
+ | 量化 | 匹配前面的子表达式一次或多次,等价于{1,} |
ab+c 可匹配 abc、abbc、abbbc等,但不能匹配 ac
|
| | 逻辑“或” | 将两个匹配条件进行逻辑“或”(Or)运算 | gray|grey 可匹配 gray 或 grey
|
( ) | 组 | 括号内的表达式为“组”(group) | gr(a|e)y 等价于 gray|grey
|
^ | 位置 | 匹配字符串起始位置,多行模式下也可匹配各行行首 | |
$ | 位置 | 匹配字符串结束位置,多行模式下也可匹配各行行尾 | |
\ | 转义 | 匹配特殊字符或被用作“元字符”的符号 |