-2

テキストファイルの内容をStr次のような文字列に保存しました。

Str = "Cat is an animal\n" +
      "Cat is small\n" +
      "Cat is a pet\n";

私は単語を検索するためにこのコードを書きましたCat

Pattern pattern = Pattern.compile("(\\bCat\\b)");
Matcher match = pattern.matcher(Str);

while (match.find()) {
    String tempStr = "I found " + match.group() + "\n";
}

上記はこの出力を生成します:

I found Cat
I found Cat 
I found Cat

これが私の質問です。キーワードCatを使用して文全体を検索し、出力が次のようになるようにするにはどうすればよいですか。

I found Cat is an animal
I found Cat is small
I found Cat is a pet

これの正規表現は何ですか?

4

3 に答える 3

0

ここでは実際には単語の境界は必要ありません。単純にすることができます。

"(Cat.*?)/n"

そして、から結果を取得しますmatch.group(1)

于 2013-02-28T20:03:50.400 に答える
0

次のような単語の一致を避けるために単語境界を使用しますCatwomanか?もしそうなら、あなたはほとんどすでにそこにいます。

Pattern pattern = Pattern.compile(".*\\bCat\\b[^.]*\\."); 
Matcher match = pattern.matcher("a super Cat too cute to be true.\n" + 
                                "and an other Cat.\n" +
                                "but not thatCat nor Catwoman no no no.");

最初の2行は検出されますが、3行目は検出されません。

于 2013-02-28T20:09:21.530 に答える
0

「文」(これはさまざまな方法で定義できる非常に広い用語です)が次の期間(.)までを意味すると仮定すると、次の期間を試すことができます

Pattern pattern = Pattern.compile("(\\bCat\\b.*\\.)");

.* 任意の文字の0以上

\\.ピリオドキャラクター

于 2013-02-28T19:54:31.643 に答える