我希望從包含數字的字符串生成正則表達式,然後將其用作模式來搜索相似的字符串。例如:從字符串生成正則表達式
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的編輯答案現在適用於我!
下面是對哪些字符問題的回答,我不知道任何庫可以生成正則表達式:http://stackoverflow.com/questions/399078/what-special-characters-must-be-escaped-in -regular-expressions –
@Evan謝謝。我只對Java感興趣,因此看起來像一個有用的資源。 –