一、实现目标

实现多个个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等来指定分组。

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

  1. react 替换标签内容_如何在 React 里自定义标签和属性?

    日常开发中通常会有一些需求,需要定义一些全局通用的组件,在 Vue 里是有这样的功能,但是在 React 里,没有见过有类似的做法,通常都是在需要的时候引入组件,原则上在 Jsx 里只允许 html ...

  2. java打印args的内容_解决java main函数中的args数组传值问题

    这几天面试中有遇到关于main数组中的args数组传值的问题,一般是从命令提示符中传值,也可以直接在java代码中赋值. 而且这个数组的长度是动态的,根据传值的个数确定数组的长度. 1.从命令提示符中 ...

  3. java获取文件新增内容_关于java生成文件,立即又读这个文件但又找不到文件新增内容的问题...

    展开全部 写文件之后,应该有一个刷新流缓冲的flush()方法.该方法可以保证你可以读到你e69da5e6ba903231313335323631343130323136353331333332643 ...

  4. java读取jsp文件内容_使用Java读取Excel文件内容

    问题:我能用Java读取一个Excel文件吗?如果能,怎么做? 回答:是的,可以用Java读取Microsoft Excel文件.微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC ...

  5. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  6. java正则不能输入汉字_求一个正则表达式只输入字母或数字或汉字,要过滤特殊字符...

    正则表达式:只能有数字或中文或字母组成 chenzhe_n16292018-09-06 一个正则表达式测试(只可输入中文.字母和数字) u0129242379192015-10-05 js正则表达式限 ...

  7. java如何快速标记条_【JAVA】如何利用TODO任务标签高效管理代办代码

    日常协同开发中,模块分配顺序.开发效率不一致的情况下会出现某一模块开发时需要调用其他开发人员所写模块未准备或者不清晰,代码搁置的情况下为了方便下次解决搁置代码.未完成项查找,常用开发工具为我们提供了t ...

  8. java怎么打印对象内容_如何打印对象内容

    1. 一个最基本的例子 使用Logging框架写Log基本上就三个步骤 引入loggerg类和logger工厂类 声明logger 记录日志 下面看一个例子 //1. 引入slf4j接口的Logger ...

  9. java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...

    为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...

最新文章

  1. Nagios之事件处理
  2. FCN全连接卷积网络(2)--读论文的过程理解
  3. map()和zip()操作
  4. [转载]Oracle ltrim() 函数用法
  5. linux 账号密码 字段,详解Linux中的用户密码管理命令passwd和change
  6. 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南
  7. html中form标签的作用style,HTML5中meta常用标签属性说明
  8. Python中利用LSTM模型进行时间序列预测分析
  9. 解决Vue开发过程中与后台服务器跨域问题
  10. WordPress Citizen Space插件跨站请求伪造漏洞
  11. 寻找圣杯 In Search of the Holy Grail
  12. 逆向工程核心原理笔记
  13. boost升压电路解析
  14. MATLAB之特征值和特征向量
  15. 信息学奥赛一本通 1183:病人排队 | OpenJudge NOI 1.10 08:病人排队
  16. 【新书推荐】【2019.06】大局观从何而来
  17. control命令详解
  18. 网工学习 第十一章 网络管理 网络管理基础 网络管理协议五大标准 SNMP协议 RMON
  19. Pytorch下transforms.ToTensor(),transforms.Normalize()详解,及代码实现和复原
  20. pythonk库函数minidom,wx

热门文章

  1. 【金融量化】如何判断一个基金是不是主动型基金还是被动型基金?
  2. oracle创建用户并授权
  3. 快速了解什么是HotSpot
  4. entityManager.createNativeQuery查询返回实体或vo及提示setResultTransformer过时处理
  5. 下载yum源和epel源
  6. 讲讲关于Precision 与 Recall 的概念
  7. Ubuntu安装sougou输入法
  8. 初代超级计算机,科技发展太快:20年前的超级计算机算力仅与新Xbox相同
  9. nginx之rewrite规则未加引号导致检查nginx语法报错
  10. 独立站选择什么类目好