正则表达式:100个错误

mde*_*ges 0 java

我正在尝试学习正则表达式,但在阅读完java教程后,我的表现并不好.

该程序应该采用以下格式:

a)将dd dd加在一起b)从13 c减去05)将02添加到03

并返回dd(+或 - )dd = answer

我设置它的(错误)方法是让prog尝试找到3个匹配中的任何一个,并继续这样做直到用户输入"bye".如果没有匹配,则应该再次提示用户输入.

这是我的代码!正好有100个错误.:/如果有人可以帮助我的语法,我真的很感激!

 import java.util.*;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;

    class Calculator {
      public static void main(String[] args){
        Scanner imp = new Scanner(System.in);
        System.out.println("yes> ");
        String s = imp.nextLine();

        if (s.equals("bye")) {
          System.exit(0);
      }

        while (true) {

          Pattern p = Pattern.compile(s); //compile string, check for formats

          Matcher x = p.matcher(\badd\b\s\d\d\s\d\d\s\btogether\b); //format add 12 12 together
          Matcher y = p.matcher(\bsubtract\b\s\d\d\s\d\d\s\bfrom\b); //format subtract 05 from 13
          Matcjer z = p.matcher(\badd\b\s\d\d\s\bto\b\s\d\d); //format add 02 to 03

          boolean b = p.matches;

          boolean l = x.matches;
          boolean i = y.matches;
          boolean g = z.matches; 

          if (l.equals(true))
            return (\d\d " + " \d\d " = " \d\d+\d\d);
          else if (i.equals(true))
            return (\d\d " + " \d\d " = " \d\d-\d\d);
          else if (g.equals(true))
            return (\d\d " + " \d\d " = " \d\d+\d\d);
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

Sam*_*war 5

您是否尝试在Eclipse或IntelliJ IDEA等IDE中查看代码?他们会为你突出错误.我看到的主要是你没有把正则表达式放在字符串中.Java没有本机正则表达式,因此您需要将它们作为字符串提供.这是一个例子:

Matcher x = p.matcher("\\badd\\b\\s\\d\\d\\s\\d\\d\\s\\btogether\\b"); //format add 12 12 together
Run Code Online (Sandbox Code Playgroud)

注意我是如何加倍反斜杠的.这是因为它是Java和正则表达式中的转义字符.编译器将上面的字符串解释为\badd\b\s\d\d\s\d\d\s\btogether\b,然后正则表达式解析器将正确解释转义字符.