数字を含む文字列から正規表現を生成し、これをパターンとして使用して類似の文字列を検索したいと考えています。例:
String s = "Page 3 of 23"
すべての数字を\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");
これを使用して、同様の文字列に一致させることができます (例: "Page 7 of 47"
)。私の問題は、これを単純に行うと(){}-
、などのメタ文字の一部がエスケープされないことです。これを行うためのライブラリ、またはエスケープしなければならない、またはエスケープしてはならない正規表現用の文字の完全なセットはありますか? ( Javadocsからそれらを抽出しようとすることはできますが、何かが欠けているのではないかと心配しています)。
あるいは、すでにこれを行っているライブラリがあります (この段階では、完全な自然言語処理ソリューションを使用したくありません)。
注:@dasblinkenlightの編集された回答が機能するようになりました!