流派原创
# 正则的流派
# 正则的简史
- 1956年一位数学家发表了题为《神经网络事件表示法和有穷自动机》的论文,描述了叫做“正则集合”的符号
- 1968年Unix之父ken Thompson发表了《正则表达式搜索算法》并将正则引入自己开发的编辑器qed以及ed中,随后正则被广泛应用
- 1986年POSIX开始进行标准化尝试,其定义了Unix应当支持的功能,以及正则的规范,大部分Unix的工具如,grep,sed,awk等均遵守该标准
- 1987年Perl语言发布,随着perl的走红,其引入的正则表达式功能大放异彩
- 1997年PCRE正则表达式解析引擎诞生,PCRE即Perl兼容正则表达式,除了Unix外,PCRE已成为大部分语言和工具遵循的标准
# 正则的流派
POSIX定义了两种正则表达式的标准
BRE标准:基本正则表达式
ERE标准:扩展正则表达式
BRE不支持量词+,?,多选分支结构管道符,使用括号要转义,ERE解决了以上问题。
除了以上符号外,POSIX还支持字符组概念如[a-zA-Z0-9]。
PCRE标准规定的正则显著特征是支持了\w, \d,\s等字符组简记方式
PCRE也是目前主流的正则标准
PCRE对Perl语言的兼容分为两种
直接兼容:对perl正则表达式直接兼容,如PCRE,PHP preg,Perl等
间接兼容:比如Java,JavaScript,Python,.Net系等等。
# 案例
- 在linux中使用不同的标准来查找含有https和ftp,http的行
https://time.geekbang.org
ftp://ftp.ncbi.nlm.nih.gov
www.baidu.com
www.ncbi.nlm.nih.gov
bre: \(f\|ht\)tps\?.*
ere: (f|ht)tps?.*
pcre:(f|ht)tps?.*
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8