我对PCRE(Perl兼容正则表达式)的强大感兴趣,并想知道它们是否可能成为所有主要语言的事实上的方法(我对Java感兴趣).如果有必要,我准备使用库.
我也找不到一个很好的页面来描述PCRE的优点和缺点,所以如果不存在,将它包含在答案中可能会有用
编辑我对Java 1.6正则表达式之外的强大感兴趣,特别是命名捕获组
hob*_*bbs 10
似乎更多的主流语言实际上使用他们自己的"Perl-like"正则表达式实现而不是实际使用libpcre.属于这一类的语言包括(至少)Java,JavaScript和Python.
Java的java.util.regex库使用这是非常严重基于Perl的语法(约5.8版)的正则表达式,包括逃避规则,\p和\PUnicode的类,非贪婪"占有欲"量词,反向引用,和\Q.. \E报价,并且数的(?...)结构包括非捕获组,零宽度前瞻/后退和非后退组.实际上,Java正则表达式与Perl正则表达式有更多共同点,而不是libpcre.:)
JavaScript语言也使用从Perl派生的正则表达式; 缺少Unicode类,lookbehind,占有量词和非回溯组,但我提到的Java的其余内容也存在于JS中.
Python的正则表达式语法也基于Perl 5,具有非贪婪量词,大多数(?...)构造包括非捕获组,前瞻/后置和条件模式,以及命名捕获组(但使用与Perl不同的语法)或PCRE).非回溯团体和"占有欲"量词是(据我可以看到)缺席,因为是\p和\PUnicode字符类,尽管标准\d,\s以及\w如果请求的类是Unicode的.