我想知道java支持正则表达式的哪些标准。用标准这个词我的意思是它支持IEEE POSIX BRE,ERE和SRE。
任何人都可以提出任何想法。
预先感谢您的回复。
答案 0 :(得分:0)
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一样。