数字を含む文字列から正規表現を生成し、これをパターンとして使用して類似した文字列を検索したいとします。例:文字列から正規表現を生成する
String s = "Page 3 of 23"
私は同様の文字列(例えば"Page 7 of 47"
)を一致させるためにこれを使用することができ\d
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
sb.append("\\d"); // backslash d
} else {
sb.append(c);
}
}
Pattern numberPattern = Pattern.compile(sb.toString());
// Pattern numberPattern = Pattern.compile("Page \d of \d\d");
によってすべての数字を代入した場合。私の問題は、私がこれを行うと、(){}-
などのメタキャラクタの一部がエスケープされないということです。これを行うためのライブラリか、正規表現のための文字の網羅的なセットがありますか?私はそれを避けてはいけませんか? (私はJavadocsから抽出しようとすることができますが、何かが見つからないことを心配しています)。
また、既にこれを行うライブラリがあります(この段階では完全なNatural Language Processingソリューションを使用しません)。
注:@ dasblinkenlightの編集された回答は、現在私にとって役立ちます!そのすべてのメタ文字を持っています「引用符で囲まれた」文字列はエスケープ
String s = Pattern.quote(orig);
:
ここではどの文字の質問に答えるが、私は正規表現を生成するライブラリは認識していない:http://stackoverflow.com/questions/399078/what-special-characters-must-be-escaped-in -regular-expressions –
@エヴァンありがとう。私はJavaに興味があるので、役に立つリソースのように見えます。 –