我正在嘗試在大文本中查找特定短語,但該短語可能包含「[」,「(」,「*」等字符,...如「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