2011-12-05 24 views
1

で仕事を得る、私はそれがJavaと二重引用符で作業する必要がある私はこの正規表現パターンを持っている正規表現は、Java

From: ["<][^>]*> 

はエラーを生成しています。私が試してみると、そのようにそれをエスケープするとき

From: [\"<][^>]*> 

正しい結果が得られません。誰も正規表現のJavaで二重引用符を処理する方法を知っていますか?おかげ

+0

のようになります。あなたはまた、http://www.regexplanet.com/を使用することができ、更新エラーhttp://i.imgur.com/hPVhV.png – medium

+2

を参照してください。単純/ index.html。これは良い正規表現テスターであり、javaでエスケープされたフォームも表示されます。 Eclipseには、貼り付けられた文字列リテラルを自動的にエスケープするオプションもあります。 – jontro

答えて

5

は、Javaの文字列リテラルで\文字はとても1は、エスケープをエスケープしなければならないJavaのリテラル文字列オブジェクトに正規表現のエスケープ文字を追加するために、予約されたエスケープ文字です:)

例えば\\"の場合、正規表現は\"となり、二重引用符で囲まれます。

編集:二重引用符文字はJava文字列リテラルの予約文字でもあることを忘れていました!このため、正規表現用の\は、"文字と同様にエスケープする必要があります。

実際のJavaの文字列リテラルは、このString regex = "\\\"";

+0

はい、それは私がやったことですが、それはjavaで準拠しません。あなたもそれがJavaの文字列リテラルのための予約文字であるとして、二重引用符文字をエスケープする必要があるためhttp://i.imgur.com/hPVhV.png – medium

+1

@mediumそれはです!実際には '\\\" 'が必要です。 –

+1

' ''は正規表現に特別な意味を持ちません。あなただけのJavaの文字列リテラル構文解析を過ぎてそれを得るためにそれをエスケープする必要があります。 '「\」「'その他の非特別な、英数字以外の文字と同じように、あなたも、正規表現でそれを逃れることがあります。 '」\\\ ""。正規表現パーサは、単一のバックスラッシュとそれに続く引用符で、バックスラッシュを無視します。 –

関連する問題