0

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

String Str ="Animals \n" +
                "Dog \n" +
                "Cat \n" +
            "Fruits \n" +
                "Apple \n" +
                "Banana \n" +
                "Watermelon \n" +
            "Sports \n" +
                "Soccer \n" +
                "Volleyball \n";

基本的に3つのStrカテゴリー(動物、果物、スポーツ)があります。それらのそれぞれは別々の行にあります。正規表現を使用して、Fruitsのコンテンツを見つけるにはどうすればよいですか。これにより、次のような出力が得られます。

Apple
Banana
Watermelon

この問題についてもっとよく理解できるように、あなたの答えにも沿った説明をお願いします。

ありがとう。:)

4

2 に答える 2

1

「Fruits」という単語と「Sports」という単語の間のテキストを抽出する場合は、キャプチャグループで正規表現を使用できます。このように、文字列が一致する場合でも、必要なテキストを含むグループを抽出する必要があります。

例えば:

Pattern p = Pattern.compile("Fruits(.*?)Sports", Pattern.DOTALL);
// The string "Fruits" ------^     ^    ^        ^
// Capture everything in between --^    ^        ^
// The string "Sports" -----------------^        ^
// This tells the regex to treat newlines        ^
//   like normal characters ---------------------^

以下の鉄道図を参照してください。

画像の鉄道図

または、ポジティブルックアヘッドとルックビハインドを使用して、より高度な正規表現を使用することもできます。つまり、正規表現で「Fruit」と「Sports」の間のテキストを検索することはできますが、これらの文字列自体を一致の一部と見なすことはできません。

Pattern p = Pattern.compile("(?<!Fruits).*?(?=Sports)", Pattern.DOTALL);
于 2013-03-01T01:27:43.640 に答える
0

文字列を単語の配列 ( ) に分割することから始めてString[] words = Regex.Split(Str, "\n");から、配列をループしてwords、適切なカテゴリに要素を追加しながら、見出しが表示されるときにカテゴリを切り替えます。

于 2013-03-01T01:13:54.093 に答える