gpt4 book ai didi

java.util.Pattern API "puzzle"

转载 作者:行者123 更新时间:2023-12-02 00:06:17 25 4
gpt4 key购买 nike

有谁知道 Pattern API 中描述这行代码行为的位置

System.out.println("000".matches("(0)\\10"));

我认为在运行它之前很少有人能说出它打印的内容。 API 说

\n Whatever the n-th capturing group matched

它并没有说 n 必须是 1 位数字。它是我测试中的第 10 组还是第 1 组?

最佳答案

您尝试匹配括号之间的字符 0,然后您希望前一个匹配的字符 \1 也在那里,后跟 0 字符。 000 确实验证了该模式,因此 match() 方法返回 true ,因此它打印 true

由于匹配器没有找到 10 捕获组,因此它将其解释为第一个 \1 ,然后是字符 0

一个更复杂的示例表明,如果匹配器找到 N 捕获组 > 9 并且可用的捕获组数量足够,它也可以工作:

System.out.println(
"01234567891011 01120".matches(
"(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11) \\1\\12\\30"
)
);

是真的,因为 0 位于第一个捕获组 \1 中,并且 11 位于捕获组 \12 中,最后没有捕获组号 \30 ,因此它被解释为反向引用 \3 (即字符 2 ),然后是字符 0

关于java.util.Pattern API "puzzle",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815787/

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