Gavin

PCRE正则表达式

一、元字符

符号 含义
^ 行首,如果在[]中,表示取反
$ 行尾
. 任意字符
| 可选分支
? 匹配0次或1次 等价于{0,1}
* 匹配0次或多次 等价于{0,}
+ 匹配1次或多次 等价于{1,}
/ 转义符 要匹配一个反斜线必须写为////
- 在[]中标记字符范围

二、()、[]、{}

()

提取匹配的字符串

[]

定义匹配的字符串范围

{}

表示匹配的长度

三、组

cat(arcat|erpillar|)

匹配cat、catarcat、caterpillar

(?:abc) 不被单独匹配

字符串 "the white queen" 匹配模式 the ((?:red|white) (king|queen)),匹配到的子串是 "white queen" 和 “queen"

(?:/(?P<id>[^/.,;?\n]++))

(?P<name>pattern) 对子组命名

(?P<controller>[^/.,;?\n]++)

四、修饰符

符号 含义
i 大小写不敏感
m PCRE默认为单行 设置后会匹配每个换行符之前或之后,另外还会匹配字符串最开始和最末尾的位置
s 点(.)号匹配所有字符,包括换行符
x 没有经过转义 或 不在字符类中的空白字符会被忽略 未经转义的#字符与下个换行符之间的字符也被忽略
A 仅从字符串开始位置进行匹配
D $符号仅仅表示末尾,如果没有设置,$会匹配换行符
S 分析,如果一个模式多次使用时,分析后可以提升速度
U 逆转量词的贪婪模式,使量词默认为非贪婪

五、贪婪、非贪婪、独占

贪婪

匹配最长。在贪婪量词模式下,正则表达式会尽可能长地去匹配符合规则的字符串,且会回溯

非贪婪

匹配最短。在非贪婪量词模式下,正则表达式会匹配尽可能短的字符串

独占

同贪婪一样匹配最长。不过在独占量词模式下,正则表达式尽可能长地去匹配字符串,一旦匹配不成功就会结束匹配而不会回溯

对应列表

贪婪 非贪婪 独占
X? X?? X?+
X* X*? X*+
X+ X+? X++
X{n} X{n}? X{n}+
X{n,} X{n,}? X{n,}+
X{n,m} X{n,m}? X{n,m}+
码字很辛苦,转载请注明来自淡兰色的海洋《PCRE正则表达式》

评论