求一个去掉style样式的正则表达式

qq_20533371 2016-10-11 05:10:17
如下所示,要去掉style标签及里面的所有内容。哪位有时间给看一下啊
...全文
489 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2016-10-12
  • 打赏
  • 举报
回复
引用 4 楼 qq_20533371 的回复:
[quote=引用 3 楼 rickylin86 的回复:]

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
	public static void main(String[] args){
		String content = "<span style=\"font-family:'宋体';font-size:10.0pt;color:#000000\">11111</span>";
		String content1 = "<p style=\"font-family:'黑体';font-size:10.0pt;color:#000000;\">2222</p>";
		String regex = "^(?m)<(?<tag>[a-zA-Z]\\w*)(?<attrs>(\\s+\\w+=\"[^\"]+\")*)\\s*>(?<content>([^<]|<(?!/))+)</(\\1)>$";
		Matcher matcher = Pattern.compile(regex).matcher(content);
		String result = null;
		if(matcher.find()){
			result = String.format("<%s>%s</%s>",matcher.group("tag"),matcher.group("content"),matcher.group("tag"));
		}
		System.out.println(result);
	}
}
如果有多个span里面带着style返回null [/quote]

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Test{
    public static void main(String[] args){
        String content1 = "<span style=\"font-family:'宋体';font-size:10.0pt;color:#000000\">11111</span>" + System.lineSeparator();//代码多行模式
        String content2 = "<p style=\"font-family:'黑体';font-size:10.0pt;color:#000000;\">2222</P>";//开始标签与结束标签忽略大小写.
		String content = content1 + content2;
		//去除标签中所有的属性部分
		//多行模式
		//大小写兼容模式
        String regex = "(?m)(?i)<(?<tag>[a-zA-Z]\\w*)(?<attrs>(\\s+\\w+=\"[^\"]+\")*)\\s*>(?<content>([^<]|<(?!/))+)</(\\1)>";
        Matcher matcher = Pattern.compile(regex).matcher(content);
        StringBuffer result = new StringBuffer();
        while(matcher.find()){
            result.append(String.format("<%s>%s</%s>",matcher.group("tag"),matcher.group("content"),matcher.group("tag")));
        }
        System.out.println(result);
    }
}
piterlin 2016-10-12
  • 打赏
  • 举报
回复
6楼正解 api文档: replaceAll public String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).matcher(str).replaceAll(repl) 注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。 参数: regex - 用来匹配此字符串的正则表达式 replacement - 用来替换每个匹配项的字符串 返回: 所得 String 抛出: PatternSyntaxException - 如果正则表达式的语法无效 从以下版本开始: 1.4 另请参见: Pattern 参考:https://piterlin.github.io/doc/jdk6_cn/java/lang/String.html
若鱼1919 2016-10-12
  • 打赏
  • 举报
回复


public static void main(String[] args) {
        String content = "<span style=\"font-family:'宋体';font-size:10.0pt;color:#000000\">11111</span><p style=\"font-family:'黑体';font-size:10.0pt;color:#000000;\">2222</p>";
        content = content.replaceAll("style=\\s*\".*?\"", "");
        System.out.println(content);
	}

  • 打赏
  • 举报
回复
<!docType HTML>
<h1>111</h1>
<span style="font-family:'宋体';font-size:100px;color:#000fff;">222</span>
<p style="font-family:'楷体';font-size:50px;color:#fff000";>Hello World !!</p>
<p>Hello World</p>


qq_20533371 2016-10-12
  • 打赏
  • 举报
回复
引用 3 楼 rickylin86 的回复:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
public static void main(String[] args){
String content = "<span style=\"font-family:'宋体';font-size:10.0pt;color:#000000\">11111</span>";
String content1 = "<p style=\"font-family:'黑体';font-size:10.0pt;color:#000000;\">2222</p>";
String regex = "^(?m)<(?<tag>[a-zA-Z]\\w*)(?<attrs>(\\s+\\w+=\"[^\"]+\")*)\\s*>(?<content>([^<]|<(?!/))+)</(\\1)>$";
Matcher matcher = Pattern.compile(regex).matcher(content);
String result = null;
if(matcher.find()){
result = String.format("<%s>%s</%s>",matcher.group("tag"),matcher.group("content"),matcher.group("tag"));
}
System.out.println(result);
}
}



如果有多个span里面带着style返回null
rickylin86 2016-10-11
  • 打赏
  • 举报
回复

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
	public static void main(String[] args){
		String content = "<span style=\"font-family:'宋体';font-size:10.0pt;color:#000000\">11111</span>";
		String content1 = "<p style=\"font-family:'黑体';font-size:10.0pt;color:#000000;\">2222</p>";
		String regex = "^(?m)<(?<tag>[a-zA-Z]\\w*)(?<attrs>(\\s+\\w+=\"[^\"]+\")*)\\s*>(?<content>([^<]|<(?!/))+)</(\\1)>$";
		Matcher matcher = Pattern.compile(regex).matcher(content);
		String result = null;
		if(matcher.find()){
			result = String.format("<%s>%s</%s>",matcher.group("tag"),matcher.group("content"),matcher.group("tag"));
		}
		System.out.println(result);
	}
}
qq_20533371 2016-10-11
  • 打赏
  • 举报
回复
引用 1 楼 qq_29594393 的回复:
可以不用正则表达式

<script type="text/javascript">
//这个函数放在body后面,再导入外部样式就可以了
			var s=document.getElementsByTagName('*')
			for(var i=0;i<s.length;i++){
				console.log( s[i].style=null)
			}
			console.log(s)
</script>
		<link rel="stylesheet" type="text/css" href="css/test.css"/>
不好意思,不行哦,我必须要用java+正则的方式
当作看不见 2016-10-11
  • 打赏
  • 举报
回复
可以不用正则表达式

<script type="text/javascript">
//这个函数放在body后面,再导入外部样式就可以了
			var s=document.getElementsByTagName('*')
			for(var i=0;i<s.length;i++){
				console.log( s[i].style=null)
			}
			console.log(s)
</script>
		<link rel="stylesheet" type="text/css" href="css/test.css"/>

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧