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,我的程序应该接受两个版本标记。不幸的是,只接受第一版或第二版,而不是两者。
答案 0 :(得分:0)
您的正则表达式[2-5]?(。[5])仅匹配" 4.5"而不是" 4"。
你必须推迟"?"表达,一旦或根本不表达.5
匹配4和4.5的正则表达式是
[2-5](\.[5])?
在Java中,你需要加倍反斜杠:
"[2-5](\\.[5])?"