带点或不带正则表达式

时间:2016-02-11 15:44:34

标签: regex class

4的正则表达式是什么,一次或不是4.5?

if(pattern.matches) {

do something 

}

我有这样的事情:[2-5]?(\。[5]),但不幸的是不起作用,我不知道为什么。

我的例子:

public static void userMarkBiology(){
do{
        System.out.print("Give Your mark from Biology");
    Pattern myPatterns=Pattern.compile("[2-5]+(\\.[5])");
    String mark=getUserThema();
if(myPatterns.matcher(mark).matches()){
    try{
        claasA.setUserMarkBiology(Double.valueOf(mark));
    }
    catch(PatternSyntaxException pse){
        System.out.println("--------------");
        System.out.println("Error, You have to use marks like, 4 lub 4.5");
    }
    catch(InputMismatchException e){
        System.out.println("--------------");
        System.out.println("Something is wrong!");

}
while(SystemyOceny.getKomunikacjaSpolecznaWyklad() ==null);

让我们说在学校学生可以得到4或4.5,我的程序应该接受两个版本标记。不幸的是,只接受第一版或第二版,而不是两者。

1 个答案:

答案 0 :(得分:0)

您的正则表达式[2-5]?(。[5])仅匹配" 4.5"而不是" 4"。

你必须推迟"?"表达,一旦或根本不表达.5

匹配4和4.5的正则表达式是

[2-5](\.[5])?
在Java中,你需要加倍反斜杠:

"[2-5](\\.[5])?"

PS。试试http://www.regexplanet.com/advanced/java/index.html

相关问题