包java.util.regex支持哪些标准

时间:2013-05-24 15:50:48

标签: java regex posix posix-ere

我想知道java支持正则表达式的哪些标准。用标准这个词我的意思是它支持IEEE POSIX BRE,ERE和SRE。

任何人都可以提出任何想法。

预先感谢您的回复。

1 个答案:

答案 0 :(得分:0)

来自Oracle的

This document包含有关Java SE 7中支持的正则表达式结构的大量信息,尽管它没有提到支持哪种标准:

  

与Perl 5的比较

     

Pattern引擎执行传统的基于NFA的匹配   在Perl 5中发生的有序交替。

     

此类不支持的Perl构造:

     
      
  • 预定义的字符类(Unicode字符)   
        
    • \h水平空格
    •   
    • \H非水平空格
    •   
    • \v垂直空白
    •   
    • \V非垂直空白
    •   
    • \R任何Unicode换行符序列\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
    •   
    • \X匹配Unicode扩展字形集群
    •   
  •   
  • 反向引用构造,nthcapturing组为\g{n},命名捕获组为\ g {name}。
  •   
  • 命名字符构造,\N{name},用于Unicode字符的名称。
  •   
  • 条件结构(?(condition)X)(?(condition)X|Y)
  •   
  • 嵌入式代码构建(?{code})(??{code})
  •   
  • 嵌入式评论语法(?#comment)
  •   
  • 预处理操作\l\u\L\U
  •   
     

此类支持的构造,但不是Perl支持的构造:

     
      
  • 描述above的字符类并集和交集。
  •   
     

Perl的显着差异:

     
      
  • 在Perl中,\1\9始终被解释为后引用;大于9的反斜杠转义数被视为a   如果存在至少那么多子表达式,则返回引用,否则   如果可能的话,它被解释为八进制逃逸。在这堂课上   八进制转义必须始终以零开头。在本课程中,\1   通过\9始终被解释为后向引用,并且更大   如果至少那么多,则接受数字作为后向参考   子表达式存在于正则表达式中的那一点,   否则解析器将丢弃数字,直到数字更小或   等于现有的组数或一位数。

  •   
  • Perl使用g标志来请求在最后一场比赛停止的地方恢复的比赛。此功能由隐式提供   Matcher类:将重新开始重复调用find方法   除非匹配器被重置,否则最后一场比赛将停止。

  •   
  • 在Perl中,表达式顶层的嵌入式标志会影响整个表达式。在这个类中,嵌入式标志始终生效   它们出现的点,无论它们是在顶层还是在顶层   在一个群体内;在后一种情况下,标志在结束时恢复   该小组与Perl一样。

  •