如何查找包含括号“(”并使用单词边界的单词?

时间:2011-03-12 08:58:17

标签: java regex word-boundaries

我正在寻找一个短语“成功(并从他们的失败中学习!)”。由于有括号,我使用了引号(...)来允许它,但我也想使用单词边界“\ b”,所以如果在这样的文本中找到了这个短语“Kin成功(并从他们的学习中学习)故障!)”。

这是我的代码:

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个条件时解决这个问题:引用(...)+“\ b”?

1 个答案:

答案 0 :(得分:0)

我认为最好的选择是放弃第二个\b

Pattern myPattern = Pattern.compile( "\\b" + phrase);

phrase!)结尾,不是单词字符,并且应该适用于所有情况,例如:failures!), and morefailures!),{{1} }

如果你想确保它没有跟着另一封信,你可以使用failures!)or not,但我不确定这里是否需要它。