POSIX规范
正则表达式两大流派:PCRE与POSIX规范。
之前笔记中的正则表达式记法,如\d、\s、\w之类的字符组简记法就是PCRE规范的正则表达式的特征。
POSIX的全称是Portable Operating System Interface for unix,它由一系列的规范构成,定义了UNIX操作系统应当支持的功能,因此POSIX规范的正则表达式其实就是正则表达式的POSIX规范,它分为BRE(基本型正则表达式)和ERE(扩展型正则表达式)两大流派。
BRE流派
Linux下的vi、grep、sed工具属于BRE这一派,BRE中元字符(、)、{、}必须转义之后才具有特殊意义,比如a\{1,2\}才能匹配字符串a或aa。
BRE不支持+、?量词,多选结构和反向引用\1、\2。
GNU对BRE做了扩展,使之支持+、?、|,但使用时需转义。也支持\1、\2之类的反向引用。
ERE流派
Linux下的egrep、awk属于ERE流派。这一流派中使用元字符时不用转义,支持量词等。
现在的BRE和ERE的主要差异是元字符是否需转义。
POSIX字符组
PCRE流派中把[....]称为“字符组”;在POSIX中,它们叫做"方括号表达式",其作用与规则与常说的"字符组"完全一样。但是POSIX中的"方括号表达式"不支持使用\uxxxx的形式表示Unicode字符。即遵循POSIX规范的正则表达式无法用[\u4e00-\u9fff]来匹配"任意一个中文字符"。