当我使用以下代码时,它有效:
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));
但这也行不通。
我如何将用户输入作为有效的正则表达式?
我在这里做一个假设..您是否输入(\d{1,2}):(\d{2})
?
如果是这样,您的示例中的\
充当的逃生。因此,要使您的输入相同,您将需要:
(d{1,2}):(d{2})