2017-10-06 12 views
-1

文字列がRegexを使用して特定の形式に従っているかどうかを確認しようとしています。例えば、ユーザは、コンソールに入る:それは形式「次(桁)(数字)」を以下かどうかを確認するif文を活性化JavaでRegexを使用して文字列をチェックする

次33

を。

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

私も試してみました:私は// D読んだものから、

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

は任意の数字0-9することができます。だから私はなぜこれが動作しないのか理解できません。上記のような行をチェックできるはずですが、Regexの経験はほとんどありません。

このelemetary quesionには申し訳ありません。ありがとうございました。

+0

スラッシュの向きを固定していると仮定すると( '' \\ "' 'not" "//" ')、入力は実際に' 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"); 
} 
関連する問題