2017-10-06 106 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"); 
} 
相關問題