gpt4 book ai didi

java - 为什么 "hello\\s*world"与 "hello world"不匹配?

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

为什么这段代码抛出 InputMismatchException ?

Scanner scanner = new Scanner("hello world");
System.out.println(scanner.next("hello\\s*world"));

相同的正则表达式在 http://regexpal.com/ 中匹配(用\s 而不是\\s)

最佳答案

与匹配器相反,扫描器内置了字符串的标记化,默认分隔符是空格。所以你的“hello world”在比赛开始之前被标记化为“hello”“world”。如果您在扫描到不在字符串中的内容之前更改了分隔符,这将是一个匹配项,例如:

Scanner scanner = new Scanner("hello world");
scanner.useDelimiter(":");
System.out.println(scanner.next("hello\\s*world"));

但对于您的情况来说,您似乎应该只使用 Matcher

这是“按预期”使用扫描仪的示例:

   Scanner scanner = new Scanner("hello,world,goodnight,moon");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next("\\w*"));
}

输出为

hello
world
goodnight
moon

关于java - 为什么 "hello\\s*world"与 "hello world"不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309776/

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