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
三月 08:00 - 12:15 13:15 - 16:15
Mer. 08:00 - 12:15 13:15 -
16:15 08:00 - 12:15 13:15 -
16:15 08:00 - 12:15 13:15 - 16:15

编辑:似乎我无法复制您的代码不起作用的情况(我已经设法做到了,但似乎不能再做一次......)。您的代码在我的机器上运行,上面的代码也是如此。

您可以尝试我建议的替代方法,因此不会删除答案,至少现在不会。

于 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() 而不是 matcher.group(1)。

于 2013-03-15T11:49:59.893 回答