使用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 楼答案
假设您向我们展示的结构在整个文件中重复,那么顺序中有四种类型的行:时间戳、头、数据和空行
例如,如果要将唯一ID与名称分开,可以尝试: