Java 正则表达式:在什么情况下,`/(?!^)/`的结果与`/`不同?

Java 正则表达式:在什么情况下,`/(?!^)/`的结果与`/`不同?,java,regex,Java,Regex,显然,Java中的split函数已从Java7更改为Java8。 (详情请参阅: ) 一些人建议使用split(“?!^”)而不是split(“”(在Java7中) 我的主要问题是如何解释/(?!^)/?是否存在与/不同的情况 首先,建议的正则表达式是split((?!^)”(与您发布的无效正则表达式相反)(?!^)是一个匹配除^(字符串的行距)之外的任何位置的字符串 正如您已经提到的,split()的行为在中发生了更改,但是开始时的零宽度匹配不会产生这样的空前导子字符串 因此,如果您使用spl

显然,Java中的
split
函数已从Java7更改为Java8。 (详情请参阅: )

一些人建议使用
split(“?!^”)
而不是
split(“”
(在Java7中)


我的主要问题是如何解释
/(?!^)/
?是否存在与
/
不同的情况

首先,建议的正则表达式是
split((?!^)”
(与您发布的无效正则表达式相反)
(?!^)
是一个匹配除
^
(字符串的行距)之外的任何位置的字符串

正如您已经提到的,
split()
的行为在中发生了更改,但是开始时的零宽度匹配不会产生这样的空前导子字符串

因此,如果您使用
split((?!^)”)
您将获得与Java版本无关的相同行为。

可以看看这个吗?