我需要从文本文件中删除样式标记..
我尝试了以下代码
String text = readFile("E:/textwithstyletags.txt");
retVal = text.replaceAll("<style(.+?)</style>", "");
当文本文件包含没有换行的样式标记时,它会起作用
即<style> body{ color:red; } </style>
当有新行时,它不起作用,比如
<style>
body{
color:red;
}
</style>
答案 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>", "");