所以我正在为“Item#”解析以下形式的文件(A和B未包括在格式中),将它们添加到列表中,为了清晰起见,这是空格:
Someword: a list of words of any length (A)
....Item 1 (B)
....Item 2
.Item 3
其中(A)部分始终为该形式,而B部分始终使用制表符(4个空格)或单个空格缩进。我的结果是{第1项,第2项,第3项}。到目前为止,我刚刚使用正则表达式匹配(A)部分,然后添加了以下行,并调用了.trim()。
我的问题是,我将如何解析看起来像这样的东西:
Someword: a list of words of any length
........Item 1
这样第二行有8个空格。所以我想忽略前4个(或可能是1个)空格,并捕获其他所有空格,得到{.... Item 1},如果x在这种情况下是空格。
答案 0 :(得分:0)
您可以使用一个正则表达式并通过单次传递获取所有项目:
String str = "Someword: a list of words of any length\r\n" +
" Item 1\r\n" + // 4 spaces at the beginning
" Item 2\r\n" + // 4 spaces at the beginning
" Item 3\r\n" + // 1 space at the beginning
" Item 4\r\n"; // 8 spaces at the beginning
Pattern p = Pattern.compile("(?m)^\\s+(Item\\s+\\d+)$");
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group(1));
}
Item 1
Item 2
Item 3
Item 4