1

我正在寻找一个大文本中的短语“在成功中(并从失败中吸取教训!) ”。由于有括号我使用了引号(...)来允许它,但我也想使用单词边界“\ 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" ?

4

1 回答 1

0

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

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

phrase以 结尾!),它们不是单词字符,并且应该适用于所有情况,例如:failures!), and more, failures!),failures!)or not

如果你想确保它后面没有你可以使用的另一个字母"\\b" + phrase + "\\B",但我不确定这里是否需要它。

于 2011-03-12T09:07:46.590 回答