我正在尝试在大文本中查找特定短语,但该短语可能包含“[”,“(”,“*”等字符,...如“name1(name2”,但它会导致无效。例外寻找它的时候,这里是我的代码:如何将模式与内部的括号相匹配?
Pattern myPattern = Pattern.compile("\\b" + phrase + "\\b"); // Exception
Matcher myMatcher = myPattern.matcher(largeText);
我曾尝试使用引号(...),以解决此类字符,但它没有工作:
phrase = Pattern.quote(phrase);
哪有我解决这个问题以允许这样的字符?
我认为这是因为这些是字边界字符,所以他们被'\ b'抓住,切断你的匹配? – BoltClock 2011-02-27 09:51:54
您能否详细说明为什么Pattern.quote不起作用?这似乎是在这里使用的优雅解决方案。 – mmccomb 2011-02-27 09:52:25
@BoltClock,像'\ b'这样的锚符合空字符串,它们只用于限制特定位置的模式匹配,但它们不会“消耗”任何东西。 – 2011-02-27 10:00:48