[内容] 常用的 Perl 兼容正则表达式 (PCRE)

1) \b 匹配单词边界处的空格字符,使用案例:# echo “ mingyuzhu ” | grep -P “\bmingyuzhu\b”
2) \B 匹配单词边界处的非空格字符,使用案例:# echo “mingyuzhu” | grep -P “\Bingyuzh\B”
3) \K 不要将 \K 左边的内容放进 $& (匹配的内容),也就是不会对 \K 左边的内容进行匹配
4) \A 匹配行首,使用案例:# echo mingyuzhu | grep -P “\Am”
5) \z 匹配行尾,使用案例:# echo mingyuzhu | grep -P “u\z”
6) \Z 匹配行尾或者匹配行尾换行符前面,使用案例:# echo mingyuzhu | grep -P “u\Z”
7) \G 全局匹配成功,位移指针自然会后移。全局匹配失败,位移指针会重置。如果匹配失败同时加上 \c 修饰符那位移指针不会变化

$txt = "123eternalcenter456";
$txt =~ /\G\d\d\d/gc; 
print "matched $&: ",pos $txt,"\n";

matched 123: 3


补充:
1) $& 代表匹配的内容
2) $` 代表匹配的内容前面的内容
3) $’ 代表匹配的内容后面的内容

8) 结尾处的 \g 全局匹配,当要匹配的内容出现时不会停下而是继续匹配下去,直到检查完全文。且每次匹配成功后都会记下指定位,每次记下的指定位在匹配的字符的左边,下次再匹配时就会从这个指定位开始匹配。每次的匹配位置可以通过 pos() 函数获取,如果匹配失败位移指针则会重置,pos 将返回 undef。如果和 \c 修饰符组合成 \gc, 匹配失败则不重置位移指针而是将位移指针向后移动 1 位,直到移动到最后 1 位。一般在匹配位置的最后面,案例:

$txt = "123eternalcenter456";
$txt =~ /\d\d\d/g; 
print "matched $&: ",pos $txt,"\n";

matched 123: 3


补充:
1) $& 代表匹配的内容
2) $` 代表匹配的内容前面的内容
3) $’ 代表匹配的内容后面的内容

9) \w 匹配单词,等价于 [[:alnum:]] 10) \W 匹配非单词,等价于 [^[:alnum:]]
11) \s 匹配空格字符,等价于 [[:space:]]
12) \S 匹配非空格字符,等价于 [^[:space:]]
13) \d 匹配数字,等价于 [0-9]
14) \D 匹配非数字,等价于 [^0-9]
15) \n 匹配换行
16) \N 不匹配换行,等价于 [^\n]