2011-12-21 1 views
1

文字列のメソッドはそうで[(*$+\.など、いくつかの特殊文字をエスケープする必要があります。たとえば、split()メソッドを考えてみましょう。次の式は、実行時例外java.util.regex.PatternSyntaxExceptionを発生させます。正規表現を使用するJavaの文字列メソッドは、他の特殊文字と同様に点でエラーを発行しません。どうして?正規表現を使用してJavaで

String str="Java[language"; 

String arr[]=str.split("["); 

String str="Java(language"; 

String arr[]=str.split("("); 

String str="Java*language"; 

String arr[]=str.split("*"); 

String str="Java$language"; 

String arr[]=str.split("$"); 

String str="Java+language"; 

String arr[]=str.split("+"); 

上記のすべての式は、java.util.regex.PatternSyntaxExceptionの例外を引き起こします。これは、String arr[]=str.split("\\[");のようなものをエスケープする必要があるためです。それはかなり明白です。ドット"."の場合


は、しかし、コンパイラは黙ってそれは表現がString arr[]=str.split(".");も全くの正規表現のそのまた一部けれどもエラー、警告なしまたは全く例外が発生しないことを意味してエスケープする必要があります解析します。どうして? strが保持する文字列は、この場合は明らかに分割されません)

+0

コンパイラは解析しません。パターンは実行時にコンパイルされます。 –

答えて

9

"."は、任意の1文字に完全に一致する正規表現です。

+0

問題の画面があり、1つの短い文章で完全な答えが得られます。 +1。 –

関連する問題