正如其他人已经指出的那样,很明显POSIX ERE不支持反向引用.
OpenGroup 基本规范第7期中未添加对ERE的反向引用的基本原理如下:
有人建议,除了区间表达式之外,还应该向ERE添加反向引用('\n').这被标准开发者拒绝,可能会降低共识.
这种限制的主要原因是允许POSIX ERE转换为确定性有限自动机(DFA),事实上,Unix中ERE的原始实现是作为DFA完成的.使用DFA可以保证实现的性能.与(无限数量)反向引用的模式匹配是NP难问题,甚至可能是NP完全问题.如果为ERE提出反向引用,就永远无法达成POSIX标准委员会的共识,因为这将迫使所有使用原始Unix实现的公司将其代码更改为非确定性实现并放弃其性能保证,并且这些公司的成员都在委员会中.
还有人指出,RE中的反向引用对于用户或实现者来说都不直观,实际上它们比现在更容易引起极度混淆.例如,参见RE-Interpretation:The Dark Corners中给出的例子
注意: RE中的反向引用与诸如sed之类的工具中的替换文本中对子模式的引用不同.
归档时间: |
|
查看次数: |
836 次 |
最近记录: |