【问题标题】:Why regex in java is behaving differently for different example? [duplicate]为什么java中的正则表达式对于不同的例子表现不同? [复制]
【发布时间】:2020-10-03 01:13:27
【问题描述】:
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 的数字分开了? 如果有人知道,请帮助我

【问题讨论】:

  • 它对我有用。请看this

标签: java regex split matcher


【解决方案1】:

这是因为最后一个表达式中有两个2。当你得到最后一个2 时,你会在所有2s 周围添加空格,所以它会导致12 被拆分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    相关资源
    最近更新 更多