显然,Java 中的 split
函数已从 Java 7 更改为 Java 8。
(更多这里:
Why in Java 8 split sometimes removes empty strings at start of result array? )
有些人建议使用 split("?!^")
而不是 split("")
(在 Java 7 中)。
我的主要问题是如何解释/(?!^)/
?有没有与//
不同的情况?
最佳答案
首先,建议的正则表达式是 split("(?!^)")
(而不是您发布的无效正则表达式)。 (?!^)
是 negative lookahead匹配除 ^
(字符串开头)之外的任何位置。
正如您已经提到的,split()
的行为在 Java 8 中发生了变化。 ,并且开头的零宽度匹配永远不会产生这样的空前导子字符串。
因此,如果您使用 split("(?!^)")
,您将获得与 Java 版本无关的相同行为。
关于java - 正则表达式:在什么情况下 `/(?!^)/` 的结果会与 `//` 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447920/