java正则表达式 替换标签内容_使用Java正则表达式替换HTML标签

一、实现目标

实现多个个HTML页的合并预览,需要如下处理

1)去掉meta标签

2)替换input标签,只保留value值(因为是预览,不保留输入框)

3)移除隐藏的input标签,即type="hidden"

4)替换textarea标签,只保留内容

5)移除script标签

二、代码实现

这里主要使用String的replaceAll方法实现标签的替换,当然你可以可以使用正则表达式的分组匹配和替换来完成。//contentString为HTML内容

//替换所有的meta标签,这里只支持单行替换

contentString=contentString.replaceAll("", "");

//移除script标签,支持多行,忽略大小写

contentString=contentString.replaceAll("(?is)(.*?)", "");

//移除所有的type为hidden的input标签

contentString=contentString.replaceAll("(?is)", "");

//替换所有的textarea,只保留值

contentString=contentString.replaceAll("(?is)(.*?)", "$1");

//替换input标签,只保留值

contentString=contentString.replaceAll("(?is)", "$1");

三、几个关键点

上面的替换有以下几个关键点:

1)对于HTML替换需要支持多行和忽略大小写的情况,正则表达式需声明为(?is)。参考上面代码中的示例。

2)因为Html标签的不规范,对于value值存在以下几种情形,value=aaa/> value=aaa> value='aaa' value="aaa",因此对于value值的判断稍显复杂,参考:,value后可能会多个空格\\s*;=等号以后可能有空格\\s*,value值开始前可能存在",'符号,最后是value结束符可能为:",',空格,/。

3)使用分组替换的话,记得使用()分组,以及后面的替换值使用$1、$2等来指定分组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值