2

Javaが受け入れる正確な文字列パターンを見つける正規表現メソッドが必要です。

私は今正規表現を持っています:

STRINGS = \"[a-zA-Z0-9" "]*\"

次のような文字列に一致します。

"this is a string"

"thisisstring"

ただし、エスケープ文字はサポートされていないため、次のような文字列:

"this is a sting \"\""

失敗します。また、この文字列は次のとおりです。

"this is a sting \"\"

有効じゃない。これらの条件を正規表現でキャッチする方法はありますか?

前もって感謝します。

4

2 に答える 2

1

\\\\正規表現文字列(角かっこの間)にを含める必要があります。これ\\は、Java文字列の\をエスケープする\\ことであり、正規表現のバックスラッシュをエスケープする必要があるため、2が必要です。

于 2012-10-17T18:45:14.030 に答える
0

文字列は疑似コードであるため、文字列が何であるかを判断するのは困難です。ただし、これはすべての英数字と二重引用符に一致する必要があります。

String pattern = "[a-zA-Z0-9\" ]*";
Pattern.matches(pattern, "\"this is a sting \"");

これは、すべての英数字、二重引用符、または次の組み合わせに一致する必要があります。\"

String pattern = "([a-zA-Z0-9\" ]|\\\\\")*";
System.out.println(Pattern.matches(pattern, "\"this is a sting \\\""));

これは、文字列に対して 1 回、正規表現パーサーに対して 1 回エスケープする必要があるためです(そのため、文字列内の aに一致するため\に 4 連続で終わることになります)。\\

于 2012-10-17T19:00:57.993 に答える