使用正则表达式从文本文件中删除样式标记

时间:2015-04-27 06:04:39

标签: java regex

我需要从文本文件中删除样式标记..

我尝试了以下代码

String text = readFile("E:/textwithstyletags.txt");
retVal = text.replaceAll("<style(.+?)</style>", "");

当文本文件包含没有换行的样式标记时,它会起作用 即<style> body{ color:red; } </style>

当有新行时,它不起作用,比如

<style> 
body{ 
color:red; 
} 
</style>

4 个答案:

答案 0 :(得分:4)

您可以在正则表达式

中使用[\s\S]代替.

即:

retVal = text.replaceAll("<style([\\s\\S]+?)</style>", "");

答案 1 :(得分:2)

你可以使用

此表达式<style[\\w\\W]+?</style>

retVal = text.replaceAll("<style[\\w\\W]+?</style>", "");

它说找到包括下划线(\w)而不是单词(\W)字符的所有字母数字字符,直到</script>

答案 2 :(得分:1)

试试这个正则表达式:

retVal  = text.replaceAll("(?i)<style.*?>.*?</style>", "");

在旁注中,您可以查看 JSoup ,这是一个用于HTML操作的java库。

答案 3 :(得分:1)

regex101上测试过。

模式:

<style((.|\n|\r)*?)<\/style>    

您的代码:

String text = readFile("E:/textwithstyletags.txt");
retVal = text.replaceAll("<style((.|\\n|\\r)*?)<\\/style>", "");