簡體   English   中英

使用正則表達式解析具有重復部分的平面文件

[英]Parsing flat file with repeating section using regex

我有一個包含以下格式數據的平面文件:

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM