有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用regex解析带重复节的java平面文件

我有一个平面文件,其中包含以下格式的数据:

1:00 PM
Name                UniqueID 
ABX 298819 12       519440AD3

12:00 AM
Name                UniqueID 
AX1 239949 01       119440AD3

其中每个部分都以时间开头,后面是标题,然后是值。我正试图通过正则表达式捕捉其中的每一部分,因此我可以得到:

section 1:
1:00 PM
Name                UniqueID 
ABX 298819 12       519440AD3

section 2:
12:00 AM
Name                UniqueID 
AX1 239949 01       119440AD3

然后将这些部分解析为java类对象,如下所示:

public class Section {
    String timestamp;
    List<Row> rows;
}

public class Row {
    String name;
    String uniqueId;
}

但我无法提取两个正正则表达式匹配之间的“文本”。下面是我尝试过的正则表达式:

((1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm))(?=.*)

但它只返回时间值:

10:30 AM
1:00 PM
1:30 PM
10:30 AM
1:00 PM
1:30 PM

我甚至尝试将Pattern.MULTILINE添加到Pattern中,但也没有效果


共 (1) 个答案

  1. # 1 楼答案

    假设您向我们展示的结构在整个文件中重复,那么顺序中有四种类型的行:时间戳、头、数据和空行

    例如,如果要将唯一ID与名称分开,可以尝试:

    String third = "ABX 298819 12       519440AD3";
    String uniqueId = third.replaceAll(".*\\s+(\\w+)", "$1");
    String name = third.replaceAll("(.*)\\s+\\w+", "$1");