我希望从包含数字的字符串中生成一个正则表达式,然后将其用作模式来搜索类似的字符串。 例如:
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的编辑答案现在对我起作用了!