2

大文字と小文字の区別を無視して、非常に大きなテキストから「幸せです」という文を削除したいと思います。その大きなテキスト センテンスの一部を次に示します。

  1. 「彼女は幸せです。私はそれが好きです。」

  2. 「彼の幸せな息子」

  3. 「彼は一日中幸せです」

  4. 「ターシャは幸せです」

  5. 「次のいずれかを選択してください: 悲しい - うれしい - 泣いている」

私の初期コードは次のとおりです。

String largeText = "....";  // The very large text here.
String removeText = "is happy";
largeText = largeText.replaceAll( "(?i)" + removeText , "" ); 

このコードは、文番号 1、3、4、5 で正常に機能します。ただし、別の意味があるため、文番号 2 からは削除したくありません。 どうやってやるの ?

4

2 に答える 2

4

パターンの周囲で使用\bして、単語の境界を検出します。すなわち:

String largeText = "....";  // The very large text here.
String removeText = "is happy";
largeText = largeText.replaceAll( "(?i)\\b" + removeText + "\\b" , "" ); 
于 2010-12-23T20:22:15.137 に答える
0

アトミック ゼロ幅アサーション(テキスト自体ではなく、文字列内の位置(単語境界など)と一致するパターン)を調べることをお勧めします。

この質問は以前に尋ねられました。詳細については、次のリンクを参照してください。

java String.replaceAll正規表現の質問

于 2010-12-23T20:22:44.217 に答える