我希望从包含数字的字符串生成正则表达式,然后将其用作模式来搜索相似的字符串。例如:从字符串生成正则表达式
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感兴趣,因此看起来像一个有用的资源。 –