为什么Java中的正则表达式在不同的示例中表现出不同?

问题描述 投票:0回答:1
Scanner sc = new Scanner(System.in);
       String s = sc.nextLine().trim();
       s= s.replaceAll("\\++"," + ");
       Pattern p = Pattern.compile("[a-zA-Z]+|\\d+|[\\(\\*\\)/%]");
       Matcher m = p.matcher(s);
       while(m.find()){
           String str=m.group();
           s= s.replace(m.group()," "+str+" ").trim();
       }
      String[] str=s.split(" +");
      for(String s1:str) System.out.print(s1+",");

如果s=22*(7-9输出为:22,*,(,7,-,9,

如果s=12*(4-2输出是:1,2,*,(,4,-,2,

为什么第二个例子中的12位数字分开?如果有人知道,请帮助我

java regex split matcher
1个回答
0
投票

之所以这样,是因为最后一个表达式中有两个2。当您获得最后一个2时,会在所有2周围添加空格,从而导致12被拆分。

© www.soinside.com 2019 - 2024. All rights reserved.