gpt4 book ai didi

带有正则表达式分隔符的 Java 扫描器

转载 作者:行者123 更新时间:2023-12-01 22:20:01 27 4
gpt4 key购买 nike

为什么下面的代码返回 false?

Scanner sc = new Scanner("-v ");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());

奇怪的是 -[a-zA-Z]//s+ 将返回 true。

我也不明白为什么这会返回 true:

Scanner sc = new Scanner(" -v");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());

最佳答案

扫描器用于将字符串分解为标记。定界符是标记之间的分隔符。分隔符是扫描仪匹配的内容;它们被丢弃了。您告诉扫描仪 -[a-zA-Z]\\s+ 是分隔符,并且由于 -v 与该正则表达式匹配,因此它会跳过它。

如果您正在查找与正则表达式匹配的字符串,请使用 String.matches()

如果您的目标确实是将字符串拆分为标记,那么您也可以考虑 String.split() ,有时使用起来更方便。

关于带有正则表达式分隔符的 Java 扫描器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489570/

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