排除仅包含数字和空格的行

时间:2013-12-05 01:08:14

标签: java

我在java中解析文件。我有这样几行:

2756 4 3179

3076 4 3179

3142 4 3179

3179 4 3179

在我的档案中。

我正在解析我的java文件。我想编写正则表达式来排除仅包含数字和空格的行。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您需要这个正则表达式: [^\\d\\s]+[^\\n] (如果您使用的是模式匹配器类)

我测试了下面的程序:

package com.stackoverflow.q20389463;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExForNumbersAndSpaces {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();
        builder.append("dummy text"); // Put some dummy text
        String line = System.getProperty("line.separator"); // In windows it is \n
        builder.append(line);
        builder.append("2756 4 3179");
        builder.append(line);
        builder.append("3076 4 3179");
        builder.append(line);
        builder.append("another one");
        builder.append(line);
        builder.append("3142 4 3179");
        builder.append(line);
        builder.append("3179 4 3179");
        builder.append(line);
        builder.append("and another one");

        System.out.println("SOURCE --BEGIN--"
                + line + builder
                + line + "SOURCE --END--");
        Pattern pattern = Pattern.compile("[^\\d\\s]+[^\\n]", Pattern.MULTILINE);
        Matcher matcher = pattern.matcher(builder.toString());
        System.out.println(line + "OUTPUT --BEGIN--");
        while (matcher.find()) {
            System.out.print(matcher.group());
        }
        System.out.println(line + "OUTPUT --END--");
    }
}

并输出以下内容:

SOURCE --BEGIN--
dummy text
2756 4 3179
3076 4 3179
another one
3142 4 3179
3179 4 3179
and another one
SOURCE --END--

OUTPUT --BEGIN--
dummy text
another one
and another one
OUTPUT --END--