首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Package java.util.regex支持哪些标准

Package java.util.regex支持哪些标准
EN

Stack Overflow用户
提问于 2013-05-24 23:50:48
回答 1查看 319关注 0票数 2

我想知道java支持哪些标准的正则表达式。我所说的标准是指它是否支持IEEE POSIX BRE、ERE和SRE。

有没有人能说出。

提前感谢您的回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-24 23:56:44

来自Oracle的This document包含了关于JavaSE7中支持的正则表达式构造的大量信息,尽管它没有提到支持哪种标准:

与Perl 5的比较

模式引擎使用有序交替执行传统的基于NFA的匹配,就像在Perl5中发生的那样。

此类不支持的Perl构造:

Unicode预定义字符类(Unicode字符)

  • \h A水平字符A非水平字符A垂直字符A非垂直whitespace
  • \R任何Unicode换行符序列\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
  • \X cluster

  • extended grapheme cluster

  • 反向引用构造,\g{n}表示the捕获组,\g{name}表示命名捕获组。
  • 命名字符构造,\N{name}按名称表示Unicode字符。
  • 条件构造(?(condition)X)和<代码>D39、<代码>H240<代码>H141嵌入式代码构造<代码>D42和<代码>D43、<代码>H244<代码><代码>H145嵌入式注释语法<代码>D46和<代码>H247<代码>H148预处理操作<代码>D49、<代码>D51和\U.

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

above.中描述的

  • Character-class并集和交集

与Perl的显著区别是:

  • 在Perl中,\1\9始终被解释为后向引用;如果至少有那么多的子表达式存在,则大于9的反斜杠转义数字被视为后向引用,否则,如果可能,它将被解释为八进制转义。在这个类中,八进制转义必须始终以零开始。在这个类中,\1\9始终被解释为反向引用,如果在正则表达式中的该点至少存在许多子表达式,则接受一个更大的数字作为反向引用,否则解析器将删除数字,直到该数字小于或等于现有的组数,或者它是一个数字。
  • Perl使用g标志来请求一个匹配,该匹配从上一个匹配中断的位置继续。此功能由Matcher类隐式提供:除非重置匹配器,否则重复调用find方法将从上次停止的位置继续。
  • 在Perl中,表达式顶层的嵌入标志会影响整个表达式。在此类中,嵌入的标志始终在它们出现的位置生效,无论它们是在顶层还是在组内;在后一种情况下,标志将在组的末尾恢复,就像在Perl.

中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16738955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档