Java - 正则表达式固定长度拆分为数组

时间:2014-09-30 13:58:07

标签: java regex

我曾经见过一个例子,但是在如何使用正则表达式将固定长度的数据流拆分成数组时却找不到它。这实际上是否可行,是这样,有没有人有一个基本的例子?

  08/14       1351 XMGYV4      AOUSC             LTC                        .000          .000 VDPJU01PMP 11AUG14:15:17:05.99     

我想将每个值存储到数组中的分隔值中,而不使用子字符串。

3 个答案:

答案 0 :(得分:1)

这种情况下的问题是,每列都没有固定的字段大小。 因此,需要匹配个别宽度,枚举。

    String s = "  08/14       1351 XMGYV4      "
        + "AOUSC             LTC                        .000          .000 "
        + "VDPJU01PMP 11AUG14:15:17:05.99     ";
    Pattern pattern = Pattern.compile("(.{7,7})(.{11,11})(.)(.{12,12})(.{18,18})(.*)");
    Matcher m = pattern.matcher(s);
    if (m.matches()) {
        for (int i = 1; i <= m.groupCount(); ++i) {
            String g = m.group(i);
            System.out.printf("[%d] %s%n", i, g);
        }
    }

这是一组包含最小和最多7个字符的(.{7,7})组。

答案 1 :(得分:0)

需要与空格字符的正则表达式匹配一次或多次,即&#34; \ s&#34;

String input = "  08/14       1351 XMGYV4      AOUSC             LTC                        .000          .000 VDPJU01PMP 11AUG14:15:17:05.99     ";
String[] split = input.split("\\s+");
System.out.println(Arrays.toString(split));

答案 2 :(得分:0)

也许考虑Krayo的解决方案String[] array = s.split( "\\s+" );