因此,您认为Java不支持无限向后看吗?
但是下面的模式会编译!
(?<=d+)w+
…尽管在Match All中会产生意想不到的结果(请参阅demo)。
在另一方面,你可以成功使用该其他无限回顾后(我以极大的惊喜发现这个问题)
(?<=\G\d+,\d+,\d+),
拆分此字符串:
0,123,45,6789,4,5,3,4,6000
它将正确输出(请参阅在线演示):
0,123,456789,4,53,4,6000
这次的结果就是您所期望的。
但是,如果您使用来微调正则表达式以获得对而不是三胞胎
(?<=\G\d+,\d+),,则这次不会分裂(请参见演示)。
底线
众所周知,Java落后是越野车。 知道这一点后,我建议您 不要浪费时间尝试理解为什么它会做 未记录的 事情 。
促使我得出这个结论的决定性词是扬·格瓦特斯(Jan Goyvaerts)的话,他是 Regex Cookbook 的合著者,也是一个Arch-
regex专家,他创造了一个出色的regex引擎,需要保持领先地位regex为其调试工具RegexBuddy提供了阳光:
Java在其后向实现中存在许多错误。其中一些(但不是全部)已在Java 6中修复。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)