私は、Java正規表現の構文よりも簡単なワイルドカードでユーザー入力を照合しようとしています。java regex(引用符で囲まれていない)の特殊文字をエスケープする
this (is \ a $ test.
と検索文字列で「test」と一致する:ユーザーはその後、入力文字列を入力します。ワイルドカードA.があると言う
this (is \ a $ %A%.
私はワイルドカードを交換することにより、これを行います検索文字列の文字列を(.+?)
とすると、ワイルドカードと正規正規表現のキャプチャグループを一致させることができます。しかし、私はまだ特殊文字をエスケープしたい。私は引用符を使用する場合は、正規表現は、もはや仕事は、正規表現の意味((.+?)
)を持つ文字も引用されているためだろう。
String inputString = "this (is \\ a $ test."
String searchString = "this (is \\ a $ %A%."
String regex = Pattern.quote(searchString);
//regex = "\\Qthis (is \\ a $ %A%.\\E"
regex = regex.replaceFirst("%A%", "(.+?)");
//regex = "\\Qthis (is \\ a $ (.+?).\\E"
Matcher matcher = Pattern.compile(regex).matcher(inputString); //no match
は本当に特殊文字をエスケープする組み込みの方法はあります、文字列全体を引用しません?