正则表达式帮助 - 清理空白 - Java

时间:2010-05-28 14:43:47

标签: java regex

我正在尝试以合理的方式查看HTML文件的文本。删除所有标记并仅保留可见文本后,我获得了一个类似于这样的字符串:

\n\n\n\n \n\n\n \n\n \n Title here \n\n\n \n\n \n\n Menu Item 1 \n\n \n\n Menu Item 2 \n\n\n \n\n you get the       point.

我想使用String.replaceAll(String regex, String regex)替换任何包含两个以上\n "\n\n" {/ 1}}的空格子字符串。

有什么想法吗?

**编辑:**

抱歉缺乏精确度。我希望上面的文字改为:

\n\nTitle here\n\nMenu Item 1\n\nMenu Item 2\n\nyou get the       point.

我希望任何只有空格的子字符串,并且包含两个以上的换行符,由"\n\n"替换。

2 个答案:

答案 0 :(得分:5)

str.replaceAll("\\s*\n\\s*\n\\s*\n\\s*", "\n\n")

这将替换包含2 \n以上的任何whitespace-substring,并将其替换为\n\n

我总是使用的Java正则表达式引用位于here。它应该可以帮助你在将来构建正则表达式。

答案 1 :(得分:1)

另一种选择:

  str.replaceAll("(?m)\\s*$", "\n").replaceAll("\n{3,}", "\n\n");

效率稍差(两次替换)但对我来说更加干净 - 易于理解和修改。第一个替换在很多情况下很有用(并且可能在之前的清理中),它确保每行没有尾随空白,并且它有一个普通的\n终止符。第二个明确表达了你的目标。