Java 用正则表达式分隔句子

Java 用正则表达式分隔句子,java,regex,Java,Regex,我想用一个特定的词作为分隔符来拆分一个句子 Lun。08:00-12:15 13:15-16:15三月08:00-12:15 13:15-16:15。08:00-12:15 13:15-16:15朱。上午8:00-12:15 13:15-16:15。08:00 - 12:15 13:15 - 16:15 "; 因此,我希望有这样一个列表: Lun.08:00-12:15 13:15-16:15 三月08:00-12:15 13:15-16:15 月8:00-12:15 13:15-16:15

我想用一个特定的词作为分隔符来拆分一个句子

Lun。08:00-12:15 13:15-16:15三月08:00-12:15 13:15-16:15。08:00-12:15 13:15-16:15朱。上午8:00-12:15 13:15-16:15。08:00 - 12:15 13:15 - 16:15 ";
因此,我希望有这样一个列表:

Lun.08:00-12:15 13:15-16:15
三月08:00-12:15 13:15-16:15
月8:00-12:15 13:15-16:15
Jeu.08:00-12:15 13:15-16:15
晚上8:00-12:15 13:15-16:15
我从下面的正则表达式开始:

final Pattern=Pattern.compile(((Lun | Mar | Mer | Jeu | Ven | Sam)。[0-9\\\-:]*);
最终匹配器匹配器=模式匹配器(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

你们中有谁能帮我找到合适的正则表达式吗?

请尝试将您拥有的更改为:

        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);
        }
String=“Lun。08:00-12:15 13:15-16:15三月08:00-12:15 13:15-16:15。08:00-12:15 13:15-16:15朱。上午8:00-12:15 13:15-16:15。08:00 - 12:15 13:15 - 16:15 ";
final Pattern=Pattern.compile(((Lun | Mar | Mer | Jeu | Ven | Sam)\\\.[0-9\\\-:]*);
final Matcher Matcher=pattern.Matcher(字符串);
列表=新的ArrayList();
while(matcher.find())
{   
添加(匹配器组(1));
}
for(字符串str:list)
{
系统输出打印项次(str);
}
收益率:

Lun.08:00-12:15 13:15-16:15
三月08:00-12:15 13:15-16:15
三月08:00-12:15 13:15-16:15
Jeu.08:00-12:15 13:15-16:15
晚上8: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 

可能是您忘记了迭代列表“myListe”数据&使用matcher.group()而不是matcher.group(1)。

您的正则表达式对我来说很好。它可以生成所需的输出。我的正则表达式很好!实际上我提取结果的方式不是很好,而是使用matcher.group(1),我使用了matcher.group()感谢您的回复!既然op接受了这个答案,他似乎只想要整个字符串,在这种情况下,他还可以使用matcher.group(0)并将表达式更改为“(?:Lun | Mar | Mer | Jeu | Ven | Sam)。[0-9\\-:]*“这也有效,但实际上使用matcher.group(0)或matcher.group(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