gpt4 book ai didi

java - 为什么拆分 `(?!^)` 和 `(?<!^)` 会产生相同的答案?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:38 26 4
gpt4 key购买 nike

下面两行代码:

System.out.println(Arrays.toString("test".split("(?<!^)")));
System.out.println(Arrays.toString("test".split("(?!^)")));

每个产生相同的输出:

[t, e, s, t]

我预计底线会产生

[, t, e, s, t]

因为它应该愿意在 ^ 之后和 t 之前拆分。有人可以指出我的想法错在哪里吗?

最佳答案

(?!^)匹配任何不在字符串开头的位置,就像 (?<!^) .自 ^ anchor 没有任何长度,无论你向前看还是向后看都无关紧要。

想象一下字符串 test像这样 |表示字符之间的位置:

|  t  |  e  |  s  |  t  |
^ matches here ($ matches here)

(?!^)在位置 0 不匹配因为当向前看 0 个字符时,正则表达式引擎从这里“看到”字符串的开头

(?<!^)这里也不匹配,因为正则表达式引擎在向后看 0 个字符时从这里“看到”字符串的开头

关于java - 为什么拆分 `(?!^)` 和 `(?&lt;!^)` 会产生相同的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503836/

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