Java:正则表达式问题,试图匹配代数术语

时间:2017-10-20 00:30:43

标签: java regex

所以我有一个正则表达式,看看用户输入是否是一个代数术语(大多数)。它的工作方式我想要完全没问题,除了事实上如果你没有放入任何空格或空格,它会说它是一个术语,因为每个表达式都可以发生0次。我试图找到解决方法,有些冗长,但找不到。

class termChecker {

    Pattern termFormat = Pattern.compile("-?\\d*.\\d*\\w?");
    Matcher termMatcher;
    boolean termMatches;

    public termChecker(String term){

        termMatcher = termFormat.matcher(term.replaceAll("\\s", ""));
        termMatches = termMatcher.matches();

    }

}

我所需要的只是一个解决方案,最好是简短的。 (如果你测试了它并且它已经按照我的要求进行了测试,我需要这个用于其他一些位,这就是原因)

编辑:是的,这需要更多的背景。 除了这里,我需要一个也可以在这里工作的正则表达式:

 class equationChecker{

    char[] operations = "+-*/^".toCharArray();
    int termNum;
    Pattern equationFormat = Pattern.compile("((-?\\d*.\\d*\\w?)|((-?\\d|.\\d|\\w)+){1}(" + Pattern.quote("+") + "|-|(/)|((^)(-?\\d*.\\d*\\w?)?)|){1})*(-?\\d*.\\d*\\w?){1}");
    Matcher equationMatcher;
    boolean equationMatches;

    public equationChecker(String equation){

        equationMatcher = equationFormat.matcher(equation.replace("(", "").replace(")", "").replaceAll("\\s", ""));
        equationMatches = equationMatcher.matches();

        String[][] equationParts = new String[2][termNum];

    }

}

因此(-?\\d*.\\d*\\w?)|((-?\\d|.\\d|\\w)+所在的地方基本上是我需要新的正则表达式才能工作的地方。

示例:-245.63x = true,14 = true,x = true,.719 = true,“word”= false。什么给我带来麻烦是“或”应该等于假,但他们没有。希望有所帮助。

0 个答案:

没有答案