用户输入正则表达式在JAVA中不起作用

时间:2017-09-07 09:57:23

标签: java regex

当我使用以下代码时,它可以工作:

String input = "8:32:03";
String filter = "(\\d{1,2}):(\\d{2})";
Pattern p = Pattern.compile(filter);
Matcher m = p.matcher(input);
if(m.find()) {  //Enters the condition.
    System.out.println("Found => " + m.group() );
}

但是,当我尝试将用户输入作为正则表达式时,它不起作用?

String input = "8:32:03";
Scanner reader = new Scanner(System.in);
String filter = reader.nextLine();
Pattern p = Pattern.compile(filter);
Matcher m = p.matcher(input);
if(m.find()) {  //Does not enter the condition.
    System.out.println("Found => " + m.group() );
}

我尝试使用Pattern p = Pattern.compile(Pattern.quote(filter));
但这也不起作用。
如何将用户输入作为有效的正则表达式?

1 个答案:

答案 0 :(得分:2)

我在这里做出假设..你输入的是(\\d{1,2}):(\\d{2})吗?

如果是这样,您示例中的\\会充当\的转义..所以为了使您的输入相同,您需要:(\d{1,2}):(\d{2})