对于4和once或根本不是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分,我的程序应该接受这两个版本的分数。不幸的是,只接受第一个或第二个版本,而不是两个都接受。
发布于 2016-02-11 23:55:08
您的正则表达式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
https://stackoverflow.com/questions/35343762
复制相似问题