在使用正则表达式的过程中,大家可能会注意到不同的工具里边正则表达式的语法貌似有些不一样,不同的语言支持的正则表达式语法也会有一些不同,其实出现这些情况的根本原因就是存在几大流派,它们之间存在一些差别。
一、流派介绍
正则表达式简单来说有三大流派:PCRE、BRE、ERE
PCRE(PerlCompatibleRegularExpression):可以说是正则表达式的老前辈,它是从Perl衍生出来的一个显赫流派,\d\w\s等表示法就是它的特征;
BRE(BasicRegularExpression):POSIX规范的正则表达式之一,grep、vi、sed都属于这一派,它显著的特征就是(){}这几个括号元字符必须经过转义才具有特殊含义,不支持+?|等元字符,随着时间发展,后来又出现了GNUBRE,GNUBRE支持上边这些字符,但是也必须都经过转义才能有特殊含义;
ERE(ExtendedRegularExpress):也是POSIX规范的正则表达式之一,egrepawk都属于这一派,(){}+?|等元字符可以直接使用不需要转义,这个流派后来也出现了GNUERE,在之前的基础上添加了支持\1\2等。
二、各语言及工具支持情况介绍
下边的表格显示了Linux下常见工具的正则表达式表示法对比:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
Java、perl、js、vb、PHP等语言中也提供正则表达式相关的模块,他们具体采用的那种流派还未具体去调查,可以再进一步研究一下。
原文链接:https://www.f2er.com/regex/362007.html