[英]Regex help — cleaning up whitespace — Java
我正在尝试以合理的方式查看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
所有空白子字符串。
有任何想法吗?
**编辑:**
抱歉,缺乏精确度。 我想将以上文本更改为:
\n\nTitle here\n\nMenu Item 1\n\nMenu Item 2\n\nyou get the point.
我希望任何仅包含空格且包含两个以上换行符的子字符串都可以由"\\n\\n"
替换。
str.replaceAll("\\s*\n\\s*\n\\s*\n\\s*", "\n\n")
这将替换任何包含2 \\n
以上\\n
空白子字符串,并将其替换为\\n\\n
。
我经常使用的Java regex参考位于此处 。 它将帮助您将来构建正则表达式。
另外一个选项:
str.replaceAll("(?m)\\s*$", "\n").replaceAll("\n{3,}", "\n\n");
这效率较低(两次替换),但对我来说却干净得多-易于理解和修改。 第一次替换在许多情况下很有用(并且可能在您之前的清洁工作中),它可以确保每行都没有尾随空格,并且具有普通的\\n
终止符。 第二个明确表达了您的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.