将字符串拆分为数组String,名称位于第一个位置

时间:2015-06-07 22:12:43

标签: java regex

我正在尝试将一个字符串拆分为数组字符串,并在数组字符串中将所有字母作为名称(有时名称有很多单词)。

简单:

car water apple 04:48 05:18 05:46 06:16 06:46 07:16 07:46 
bridge night 04:57 05:27 05:56 06:26 06:56 07:26 07:56

结果应如下所示:

[car water apple, 04:48 05:18 05:46 06:16 06:46 07:16 07:46 ]
[bridge night, 04:57 05:27 05:56 06:26 06:56 07:26 07:56]

代码:

if (line.contains(":") && min_value > 0) {
            // With this regular expression I am getting it without `car water apple`
            String[] newLine = line.replaceFirst(
                    "(?m)^.*?(?=\\d+:\\d+)", "").split("\\s+");
        }

如何解决?

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的代码:

String line = "car water apple 04:48 05:18 05:46 06:16 06:46 07:16 07:46\nbridge night 04:57 05:27 05:56 06:26 06:56 07:26 07:56";
List<String[]> allMatches = new ArrayList<String[]>();
Matcher m = Pattern.compile("(?m)^(.*?)\\s*((?:\\d+:\\d+\\s*)*)$")
      .matcher(line);
while (m.find()) {
     allMatches.add(new String[] { m.group(1), m.group(2)});
}

for(String[] object: allMatches){
  System.out.println(Arrays.toString(object));
}

请参阅IDEONE demo

输出:

[car water apple, 04:48 05:18 05:46 06:16 06:46 07:16 07:46]
[bridge night, 04:57 05:27 05:56 06:26 06:56 07:26 07:56]