Dirj:
私は、文字列の入力だけでなく、文字列のパターンを持っており、彼らは正規表現のために特別な意味を持つような文字のすべての並べ替えが含まれている可能性が想定する、と私は特殊文字に特別な配慮をせずに場所を取るために、正確な単語の交換をしたいと思います。特別な意味は無視されるべきです。そして私は、このような特殊文字は入力文字列または入力パターンのいずれかに存在するかもしれない正確にどのように多くのコンパイル時に知ることができません。
そこでここでは、正式な問題文は次のとおりです -
オブジェクトINPUT_STRINGは、String型の入力であると仮定する。その後、我々はまた、String型のオブジェクトである別の文字列input_patternを持っています。
今、私は次のことを実行したいです: -
String result=input_string.replaceFirst(input_pattern,"replacewithsomethingdoesntmatter");
交換は、文字列の中に存在する場合、文字の任意の正規表現特殊な意味を考慮せずに、「正確に」一致方式で行われるべきです。どのようにそれを実現するには?
ロビーCornelissen:
あなたは使用することができますPattern.quote()
正規表現で特別な意味を持つ文字をエスケープする方法を:
String pattern = "^(.*)$";
String quotedPattern = Pattern.quote(pattern);
System.out.println(quotedPattern);
これは引用マーカー(中パターン折り返す\Q
とを\E
包ん配列が文字通り一致する必要があることを示します)。
また、手動で引用マーカーのパターンをラップすることができます。
String pattern = "^(.*)$";
String quotedPattern = "\\Q" + pattern + "\\E";
System.out.println(quotedPattern);
それはまた、すでに引用マーカーを含む式のための宿泊施設を行いますので、最初のアプローチは、おそらく安全です。