gpt4 book ai didi

java - 使用正则表达式解析具有重复部分的平面文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:41 24 4
gpt4 key购买 nike

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

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 但它也不起作用。

最佳答案

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

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

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

关于java - 使用正则表达式解析具有重复部分的平面文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40843738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com