gpt4 book ai didi

java - Matcher LookingAt 方法匹配空字符串

转载 作者:行者123 更新时间:2023-12-01 12:42:47 26 4
gpt4 key购买 nike

我使用 Matcher 实例通过 lookingAt() 方法在某些输入的开头匹配模式。然而,当我从空字符串创建 Pattern 并尝试将其与非空(修剪过的)字符串匹配时,lookingAt() 返回 true。

首先,这正如我所期望的:

String field = "Dave went to Alabama"

String escapedQuery = Pattern.quote("Dave went");
Pattern pattern = Pattern.compile(escapedQuery, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(field);
// matcher.lookingAt() == true

但是,从空字符串生成的此模式也会返回 true:

String escapedQuery = Pattern.quote("");
Pattern pattern = Pattern.compile(escapedQuery, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(field);
//matcher.lookingAt() == true

在编译任何模式之前,所有涉及的字符串都已被修剪。

有人能指出我在这里缺少什么吗?

非常感谢。

最佳答案

这是一个一致性问题。空模式就像空字符串,如果你尝试

System.out.println( "abc".indexOf("") );

您会看到这是在偏移量 0 处找到的。

显然,在长度 > 0 的字符串中,甚至在长度为 0 的字符串中,在许多地方都可以找到长度为 0 的子字符串!

关于java - Matcher LookingAt 方法匹配空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943239/

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