Java正则表达式后向组没有明显的最大长度错误

Java正则表达式后向组没有明显的最大长度错误,第1张

Java正则表达式后向组没有明显的最大长度错误 Java Lookbehind臭名昭著

因此,您认为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中修复。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5430199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存