1

特定の単語をセパレータとして使用して文を分割したい

Lun. 08:00 - 12:15 13:15 - 16:15 Mar. 08:00 - 12:15 13:15 - 16:15 Mer. 08:00 - 12:15 13:15 - 16:15 Jeu. 08:00 - 12:15 13:15 - 16:15 Ven. 08:00 - 12:15 13:15 - 16:15 ";

結果として、次のようなリストが必要です:

Lun. 08:00 - 12:15 13:15 - 16:15 
Mar. 08:00 - 12:15 13:15 - 16:15 
Mer. 08:00 - 12:15 13:15 - 16:15 
Jeu. 08:00 - 12:15 13:15 - 16:15 
Ven. 08:00 - 12:15 13:15 - 16:15

私は以下の正規表現から始めました:

final Pattern pattern = Pattern.compile("((Lun|Mar|Mer|Jeu|Ven|Sam). [0-9 \\-:]*)");
final Matcher matcher = pattern.matcher(horaires);
while (matcher.find())
{   
    myListe.add(matcher.group())
}

しかし、それは私に次のような結果をもたらします:

 matcher.group(1) = Lun. 08:00 - 12:15 13:15 - 16:15 matcher.group(2) = Lun. 08:00 - 12:15 13:15 - 16:15 

正しい正規表現を見つけてください。

4

2 に答える 2

0

あなたが持っているものをこれに変更してみてください:

        String string = "Lun. 08:00 - 12:15 13:15 - 16:15 Mar. 08:00 - 12:15 13:15 - 16:15 Mer. 08:00 - 12:15 13:15 - 16:15 Jeu. 08:00 - 12:15 13:15 - 16:15 Ven. 08:00 - 12:15 13:15 - 16:15 ";
        final Pattern pattern = Pattern.compile("((Lun|Mar|Mer|Jeu|Ven|Sam)\\. [0-9 \\-:]*)");
        final Matcher matcher = pattern.matcher(string);
        List<String> list = new ArrayList<String>();
        while (matcher.find())
        {   
            list.add(matcher.group(1));
        }

        for(String str : list)
        {
            System.out.println(str);
        }

収量:

ルン。08:00 - 12:15 13:15 - 16:15
3月 08:00 - 12:15 13:15 -
16:15 08:00 - 12:15 13:15 -
16:15 08:00 - 12:15 13:15 -
16:15 08:00 - 12:15 13:15 - 16:15

編集:あなたのコードが機能しない状況を再現できないようです(私はそれを1つ実行できましたが、もう一度実行できないようです...)。あなたのコードは私のマシンで機能し、上記のコードも機能しました。

別のアプローチとして私が提案したことを試すことができるので、少なくとも今のところ、答えは削除されません。

于 2013-03-15T09:58:47.780 に答える
0

あなたの正規表現は正しいです!私はそれを実装しました。必要なものと同じ出力が得られます。このデモ プログラム
を参照してください。

final Pattern pattern = Pattern.compile("((Lun|Mar|Mer|Jeu|Ven|Sam). [0-9 \\-:]*)");
final Matcher matcher = pattern.matcher(horaires);
while (matcher.find())
{   
    myListe.add(matcher.group())
}

//Iterate your list.
for (String str : myListe) {
      System.out.println(str);
}

出力が得られます:

Lun. 08:00 - 12:15 13:15 - 16:15 
Mar. 08:00 - 12:15 13:15 - 16:15 
Mer. 08:00 - 12:15 13:15 - 16:15 
Jeu. 08:00 - 12:15 13:15 - 16:15 
Ven. 08:00 - 12:15 13:15 - 16:15 

リスト「myListe」データを繰り返し処理し、matcher.group(1) の代わりに matcher.group() を使用するのを忘れている可能性があります。

于 2013-03-15T11:49:59.893 に答える