2017-10-06 52 views
-1

我想检查一个字符串是否遵循使用正则表达式的特定格式。例如,用户在控制台输入:使用正则表达式在Java中检查字符串

下一个33

然后激活一个if语句,其检查,如果它的格式是“下一个(数字)(数字)”。

if ("next \\d\\d".equalsIgnoreCase(command)) { 
    //further code 
} 

我也曾尝试:

if (command.matches("next //d//d")) { 
    //further code 
} 

从我已阅读// d可以是任何数字0-9。所以我不明白为什么这不起作用。似乎我应该可以像上面那样查看一条线,但是我对Regex的经验很少。

我很抱歉为这个elemetary quesion。谢谢。

+0

第二个应该工作,假设你解决斜线的方向(应该是'“\\”''没有“//”'),输入被实际上得到记录到'command',那输入是'next 33'(区分大小写)......第一种方法不起作用,因为'equalsIgnoreCase'是区分大小写的,但直接比较,不是正则表达式匹配......另外,考虑改变'\\ d \\ d'到'\\ d {2}',因为它可以提高可读性......最后,阅读[模式文档](https://docs.oracle.com/javase/8/docs/api/ java/util/regex/Pattern.html),它将帮助你理解正则表达式的语法和正确的用法。 – XenoRo

回答

1

您的语法关闭。您需要String.matches(String)且订单很重要。这

if ("next \\d\\d".equalsIgnoreCase(command)) { 
    // ... 

应该

if (command.matches("next \\d\\d")) { 
    // ... 
0

请试试这个代码。

String pattern = "next (\\d){2}"; 
String command = "next 33"; 

// Create a Pattern object 
Pattern r = Pattern.compile(pattern); 
// Now create matcher object. 
Matcher m = r.matcher(command); 
if (m.find()) { 
    System.out.println("TRUE"); 
} else { 
    System.out.println("FALSE"); 
} 
相关问题