2011-12-20 35 views
4

私はJavaを初めて使用しています。誰かが私を助けることができますか?正規表現で特殊文字をエスケープする方法***(。*)

Javaでは、以下の正規表現の特殊文字を自動的にエスケープする方法はありますか? ***(.*)を脱出する前に

\\*\\*\\*(.*)

を脱出した後、私は脱出したくない(。*)ここに。

+2

「エスケープ」では、エスケープするアスタリスクと、エスケープしないアスタリスクをどのように把握する必要がありますか?あなたはそれのためのルールを策定できますか? –

+0

@TimPietzcker。私はあなたのコメントを見てから手がかりを得た。私はエスケープする必要のある各特殊文字の前にインジケータを広告することができます。 – Pavan

+1

インジケータを追加できるのであれば、そこにバックスラッシュを追加してみましょう。 –

答えて

6

その面では、Pattern.quoteが仕事をしているようです。

しかし、あなたの質問の詳細を見ると、いくつかのメタキャラクタをエスケープできるようにしたいと思っているようです。 Pattern.quoteは、それを単一の文字列に適用した場合は実行されません。むしろ、それはそれぞれのすべての文字を引用します。 (レコードの場合、バックスラッシュは使用されません。エスケープする必要のある文字を見つけるために文字列を解析するコストを避けるために、\ Eと\ Qを使用します)。

実際の問題あなたがどのメタキャラクターを逃げるか、どのメタキャラクターをそのまま残すかを決定する方法については言及していないということです。たとえば、最初の3つの ''文字はエスケープするが、 "。"文字はエスケープする方法を知ることはできますか?

明確な仕様がなければ、あなたの質問はほとんど答えることができません。仕様を指定しても、これを簡単に行う方法はほとんどありません。

IMOの場合、より良いアプローチは、パターンをそのコンポーネントの部分からアセンブルする前にエスケープすることです。ここで行われていることを前提とします。

+0

答えてくれてありがとうStephen。私は何とか私の顧客を今何とか説得しなければなりません:(( – Pavan

+1

@JQone - 特殊文字を区別するためのルールを指定して顧客に逃げないようにする方法を教えてください。あなたはそれを実装することはできません。(これは本当です。) –

関連する問題