gpt4 book ai didi

java - String.matches() 和 matcher.matches() 返回不同的结果

转载 作者:行者123 更新时间:2023-11-30 05:21:36 27 4
gpt4 key购买 nike

在下面的代码示例中,matcher.matches() 和 String.matches 不返回相同的结果,我不明白为什么:

    String MIDDLESIGN = "[(\\/)"+"|"+"(\\*)"+"|"+"(\\++)"+"|"+"(\\-+)]";
String x = "1 +++ 2 * 3 -- 4";
System.out.println("1 +++ 2 * 3 -- 4".matches("(\\d+\\s+"+MIDDLESIGN+"*"+"\\s+\\d*)+")); //true

Pattern pattern = Pattern.compile((\\d+\\s+"+MIDDLESIGN+"*"+"\\s+\\d*)+");
Matcher matcher = pattern.matcher(x);

System.out.println(matcher.matches()); //false

知道为什么会出现这种差异吗?

最佳答案

您的代码中似乎存在问题:

工作正常:result

String MIDDLESIGN = "[(\\/)"+"|"+"(\\*)"+"|"+"(\\++)"+"|"+"(\\-+)]";
String x = "1 +++ 2 * 3 -- 4";
System.out.println("1 +++ 2 * 3 -- 4".matches("(\\d+\\s+" + MIDDLESIGN + "*" + "\\s+\\d*)+")); // true

Pattern pattern = Pattern.compile("(\\d+\\s+" + MIDDLESIGN + "*" + "\\s+\\d*)+");
Matcher matcher = pattern.matcher(x);
System.out.println(matcher.matches()); // true

来自您的代码:Pattern.compile((\d+\s+"+MIDDLESIGN+""+"\s+\d)+");

其中缺少 "。将其替换为以下代码:

Pattern pattern = Pattern.compile("(\\d+\\s+" + MIDDLESIGN + "*" + "\\s+\\d*)+");

关于java - String.matches() 和 matcher.matches() 返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59484670/

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