【发布时间】:2016-11-28 11:57:15
【问题描述】:
我有一个包含以下格式数据的平面文件:
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,但也没有用。
【问题讨论】:
-
你想提取什么?
-
试试这个:
(\d+):(\d+)\s(PM|AM)\s*Name\s*UniqueID\s*(\w.*?)\s(\d+)\s+(\d+)\s+([\d\w]+)你只需要全局启用。顺便说一句,您要确切地说什么?尝试使用 regexr.com 之类的正则表达式可视化工具 -
我已经更新了问题