gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:07:53 25 4
gpt4 key购买 nike

显然,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com