1

大きなテキストで「成功する(そして失敗から学ぶ!) 」というフレーズを探しています。角かっこがあるので、quote(...) を使用してそれを許可しましたが、単語の境界 "\b" も使用したいので、このフレーズがそのようなテキストで見つかった場合は無視されます "Kin successes (そして、彼らの成功から学ぶ)失敗!)」。

これが私のコードです:

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 を返します。quote(...) + "\b" という 2 つの条件を使用しているときにこれを修正する方法はありますか?

4

1 に答える 1

0

私の意見では、ここでの最良のオプションは2番目を削除すること\bです:

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

phraseで終わりますが!)、これは単語の文字ではなく、すべての場合に適切に一致する必要があります。例: failures!), and more, failures!),failures!)or not

後に別の文字が続かないことを確認したい場合は、 を使用できますが"\\b" + phrase + "\\B"、ここで必要かどうかはわかりません。

于 2011-03-12T09:07:46.590 に答える