【发布时间】:2011-03-12 08:58:16
【问题描述】:
我正在寻找一个大文本中的短语“in successes (and learn from their failures!)”。由于有括号,我使用了引号(...)来允许它,但我也想使用单词边界“\ b”,所以如果在这样的文本“亲属成功(并从他们的失败!)”。
这是我的代码:
String phrase = Pattern.quote( "in successes (and learn from their failures!)" );
Pattern myPattern = Pattern.compile( "\\b" + phrase + "\\b" ); // Use word boundary(\b) = No letters after it.
Matcher myMatcher = myPattern.matcher( bigText );
myMatcher.find(); // Returns false.
如前所述,由于使用“\b”,此代码将返回 false。如果我省略了“\b”,匹配器将返回 true。 有没有办法在使用 2 个条件时解决这个问题:quote(...) + "\b" ?
【问题讨论】:
-
你不应该逃避大括号 --
phrase.replace("(", "\\(") -
@Nishan:不仅仅是牙套。它可能是 /*^$#_- 或任何其他字符。
标签: java regex word-boundaries