仅删除Java String中的X空格

时间:2013-12-09 04:16:49

标签: java regex

所以我正在为“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在这种情况下是空格。

1 个答案:

答案 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

描述

Regular expression visualization