我正在尝试以合理的方式查看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"
替换。
答案 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
终止符。第二个明确表达了你的目标。