正则表达式问题,删除整行

时间:2014-01-03 15:37:19

标签: java regex

在过去的几个小时里,我一直在努力创建一个正则表达式,在选择评级后删除以特定字词开头的文本行。

以下是我要删除的内容。我也试图将评级从段落中拉出来(通过或失败)。

Review Master: text here 
1111111111 text here 
Rating: Fail text here 
Review Master Page text here 

我正在尝试删除以下开头的所有行。 我有

^Review Master:
^[0-9]{10}
^Rating:
^Review Master Page

同样,我正在努力替换(删除)并仅查找评级。

1 个答案:

答案 0 :(得分:2)

如果您想在文件中找到这些确切的行,那么这将有效:

Review Master:\n\\d++\nRating:\\s*+(\\w++)\nReview Master Page"

以下是使用输入作为测试字符串的示例:

public static void main(String[] args) throws Exception {
    final String in = "Review Master:\n"
            + "1111111111\n"
            + "Rating: Fail\n"
            + "Review Master Page";
    final Matcher m = Pattern.compile(""
            + "Review Master:\n"
            + "\\d++\n"
            + "Rating:\\s*+(\\w++)\n"
            + "Review Master Page").matcher(in);
    while(m.find()) {
        System.out.println(m.group(1));
    }
}

输出:

Fail

如果您要删除这些行,则需要将文件中的模式替换为String

public static void main(String[] args) throws Exception {
    final String in = "Some other text\n"
            + "Review Master:\n"
            + "1111111111\n"
            + "Rating: Fail\n"
            + "Review Master Page\n"
            + "Some final text";
    final Matcher m = Pattern.compile(""
            + "\n?"
            + "Review Master:\n"
            + "\\d++\n"
            + "Rating:\\s*+(\\w++)\n"
            + "Review Master Page").matcher(in);
    final StringBuffer output = new StringBuffer();
    while (m.find()) {
        System.out.println(m.group(1));
        m.appendReplacement(output, "");
    }
    m.appendTail(output);
    System.out.println("Result: \"" + output.toString() + "\"");
}

输出:

Fail
Result: "Some other text
Some final text"

即。我们使用Matcher从输入中提取通过/失败,并构建输出,替换与任何内容匹配的文本块。

您尚未明确哪些模式部分是可变的。