使用模式和匹配器解析字符串

时间:2016-03-26 15:52:32

标签: java string pattern-matching matcher

我有字符串

 str = "-------------Date 26032016
Hi Team, I am alone.
-------------Time 206066";

我需要

嗨,团队,我一个人。

我正在使用以下代码,但

Pattern p = Pattern.compile("(-*?) H");
        Matcher m = p.matcher(str);
        while (m.find()) {
            part = m.group(1);
        }
Pattern p1 = Pattern.compile("(.*?) -");
        Matcher m1 = p1.matcher(part);
        while (m1.find()) {
            part1 = m1.group(1);
        }

但不行。

我试图在Date(例如。------------- Date 26032016)和Time(例如------------)之间找到任何字符串。 - 时间206066)。

2 个答案:

答案 0 :(得分:1)

为什么使用多个匹配器? 你可以简单地使用:

-*Date \\d{8}\n(.*)\n-*Time \\d{6}

这假设用你的字符串值表示的行实际上是不同的行,而不仅仅是accidential line wrap。

否则您需要替换(或删除)模式中的\n字符

答案 1 :(得分:0)

您可以使用此类网站创建正则表达式:https://regex101.com/

这应该有效:

Pattern p = Pattern.compile("-*Date \\d*\\r?\\n?(.*)\\r?\\n?-*Time \\d*");
Matcher m = p.matcher(str);
while (m.find()) {
            part = m.group(1); //part is now 'Hi Team, I am alone.'

}