2017-06-07 4 views
2

私はただの文字(\)バックスラッシュにマッチする正規表現を使用したいが、それはPatternSyntaxExceptionをスロー:何が問題なのですか?Pattern pattern = Pattern.compile( "\");

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 
\ 
^ 
    at java.util.regex.Pattern.error(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at java.util.regex.Pattern.<init>(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at helloworld.HelloWorld.main(HelloWorld.java:20) 
+1

使用'となります。 – Berger

+0

https://stackoverflow.com/questions/4025482/cant-escape-the-backslash-with-regexの重複 –

+0

あなたはエスケープ文字をエスケープしています。このエスケープ文字は、エスケープ文字をエスケープされていないものとして扱います。 "\\\\"を試してください。 – vegaasen

答えて

2

あなただけの唯一の正規表現のエスケープ文字\を使用して正規表現をしようとしている(ある理由ですただ、明確にする)

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \を上げ、ちなみに、Javaでスラッシュ\も、エスケープシーケンス(java escape charactersの開始を識別するために使用される文字である)と、コンパイラに特別な意味を持っています。したがって、文字列にスラッシュを書きたい場合は、それを倍にする必要があります("\\")。

スラッシュを検索する正規表現を書きたい場合は、それをエスケープし、正規表現をJava Stringで翻訳する必要があります。スラッシュをもう一度繰り返す必要があります。

あなたはJavaの文字だけでなく、正規表現の文字をエスケープする必要があるため、だから、スラッシュのための正規表現は、 `「\\\\」"\\\\"