0

次のように文字列をパターン化します。

letters (in here there may be letters, numbers and whitespace)

私はこれを試しましたが、うまくいきません。

Scanner cin = new Scanner(System.in);
String format = "^[a-zA-Z]* ([a-zA-Z_0-9\\s]*)$";
String userInput = cin.nextLine();
if (userInput.matches(format)) {
   System.out.println("Correct Patten");
} else {
   System.out.println("Incorrect Pattern");
}

前もって感謝します...

4

3 に答える 3

3

正規表現の括弧には特別な意味があり、リテラル文字と一致する必要があります。二重のバックスラッシュを前に付けて、両方の括弧をエスケープします。

于 2012-10-27T10:00:04.157 に答える
2

正規表現の一部の文字には特別な意味があり、括弧はその 1 つです。それらが文字として解釈されない場合は、バックスラッシュでエスケープする必要があります。バックスラッシュは Java 文字列で特別な意味を持つため、バックスラッシュでエスケープする必要があります (合計 2 つ)。

したがって、正規表現は

String format = "^[a-zA-Z]* \\([a-zA-Z_0-9\\s]*\\)$";
于 2012-10-27T10:06:56.160 に答える
1

バックスラッシュで括弧をエスケープし、フォーマットにコンマがありません:

`String format ="^[a-zA-Z]*\\s\\([a-zA-Z_0-9\\s,]*\\)";`

        String userInput = cin.nextLine();
System.out.println(userInput);
        if(userInput.matches(format)){

           System.out.println("Correct Patten");

        }else{

           System.out.println("Incorrect Pattern");

        }

    INPUT: letters (in here there may be letters, numbers and whitespace)
    OUTPUT:correct Pattern
于 2012-10-27T09:59:47.423 に答える