【发布时间】:2012-11-10 14:41:29
【问题描述】:
Wikipedia says 扩展正则表达式“放弃了对反向引用的支持”,因此必须使用“基本”正则表达式模式来启用这些。但是,似乎许多实现确实支持扩展正则表达式的反向引用。例如,Ubuntu Precise 上的 gcc 4.6 支持它们。 FreeBSD 实现 seem to 仅在基本模式下支持它们。
Boost says(并且似乎同意维基百科)扩展的正则表达式不支持反向引用,但 Boost::Regex 将它们作为扩展添加。
这只是标准中定义不明确的部分,每个实现都有不同的解释吗?
【问题讨论】:
-
维基百科并不总是可靠信息的最佳来源。我认为没有理由在任何实现/环境中的扩展正则表达式中不支持反向引用。 POSIX 标准不支持扩展正则表达式的反向引用,但我不知道任何遵循这个“标准”的实现。
-
+Ωmega 显然 FreeBSD 实现确实遵循这一点。阅读“re_format”手册页,添加了一个特殊的“增强”模式以支持扩展模式下的反向引用
-
FreeBSD 中的
egrep似乎支持它们。 -
OpenBSD,OTOH,似乎只保留对 BRE(基本正则表达式)的反向引用