正则只保留括号里的内容
场景:公司框架有一个前台导出功能,实际上是把HTML结构通过正则去掉一些没用的样式,然后由统一的工具导出。
但是不支持列表为下拉的样式,比如这种:
观察了工具:是这样的
<%@page contentType="text/html;charset=GB2312"%>
<%@ page import="java.util.regex.*" %>
<jsp:useBean id="xml" scope="session" class="com.nstc.exportkit.excel.ExportExcel"/><%String name=(String)request.getParameter("fileName");String fileName=name + ".xls";if(name!=null&&!"".equals(name)){fileName=java.net.URLEncoder.encode(name+".xls", "utf-8");}System.out.println("导出文件名称:"+fileName);response.reset();response.setContentType( "application/vnd.ms-excel;charset=GB2312");response.setHeader("Content-disposition","attachment; filename=\"" + fileName + "\"");String table = request.getParameter("_ExcelText_");//bos.write(table);//bos.close();if(table.indexOf("</THEAD>")>0 ){String regex ="(<THEAD.*?>)";String regex1 ="(</THEAD>)|(<TBODY.*?>)";Pattern p1 = Pattern.compile(regex1,Pattern.CASE_INSENSITIVE);Matcher m1 = p1.matcher(table);String res1= m1.replaceAll("");Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(res1);String res= m.replaceAll("<TBODY>");String regex2 = "<BR>";Pattern p2 = Pattern.compile(regex2,Pattern.CASE_INSENSITIVE);Matcher m2 = p2.matcher(res);String res2 = m2.replaceAll("");String regex3 = "<INPUT.*?>";Pattern p3 = Pattern.compile(regex3,Pattern.CASE_INSENSITIVE);Matcher m3 = p3.matcher(res2);String res3 = m3.replaceAll("");String regex4 = "<SCRIPT LANGUAGE=.*?</SCRIPT>";Pattern p4 = Pattern.compile(regex4,Pattern.CASE_INSENSITIVE);Matcher m4 = p4.matcher(res3);String res4 = m4.replaceAll("");String regex5 = "<TABLE.*?>";Pattern p5 = Pattern.compile(regex5,Pattern.CASE_INSENSITIVE);Matcher m5 = p5.matcher(res4);String res5 = m5.replaceAll("<TABLE>");/*int i = res5.indexOf("<TR style=\"DISPLAY: none\"");String res14 = "";if(i>0){res14 = res5.substring(0, i);res14 += "</TBODY></TABLE>";}else{res14 = res5;}*/String regex14 = "<TR[^>]*?style=\"DISPLAY: none\"[\\s\\S]*?>[\\s\\S]*?</TR>";Pattern p14 = Pattern.compile(regex14,Pattern.CASE_INSENSITIVE);Matcher m14 = p14.matcher(res5);String res14 = m14.replaceAll("");String regex13 = "<TD[^>]*?style=\"DISPLAY: none\"[\\s\\S]*?>[\\s\\S]*?</TD>";Pattern p13 = Pattern.compile(regex13,Pattern.CASE_INSENSITIVE);Matcher m13 = p13.matcher(res14);String res13 = m13.replaceAll("");String regex7 = "<TR.*?>";Pattern p7 = Pattern.compile(regex7,Pattern.CASE_INSENSITIVE);Matcher m7 = p7.matcher(res13);String res7 = m7.replaceAll("<TR>");String regex8 = "<SPAN.*?>";Pattern p8 = Pattern.compile(regex8,Pattern.CASE_INSENSITIVE);Matcher m8 = p8.matcher(res7);String res8 = m8.replaceAll("");String regex9 = "</SPAN>";Pattern p9 = Pattern.compile(regex9,Pattern.CASE_INSENSITIVE);Matcher m9 = p9.matcher(res8);String res9 = m9.replaceAll("");String regex10 = "<LABEL.*?>";Pattern p10 = Pattern.compile(regex10,Pattern.CASE_INSENSITIVE);Matcher m10 = p10.matcher(res9);String res10 = m10.replaceAll("");String regex11 = "</LABEL>";Pattern p11 = Pattern.compile(regex11,Pattern.CASE_INSENSITIVE);Matcher m11 = p11.matcher(res10);String res11 = m11.replaceAll("");/*String regex12 = "(?i)<select.*?>.*?<option.*?selected=\"selected\".*?>(.*?)</option>.*?</select>";Pattern p12 = Pattern.compile(regex12,Pattern.CASE_INSENSITIVE);Matcher m12 = p12.matcher(res11);String res12 = m12.replaceAll("$1");*/System.out.println(res11);xml.export(res11,response.getOutputStream());} else {String regex2 = "<BR>";Pattern p2 = Pattern.compile(regex2,Pattern.CASE_INSENSITIVE);Matcher m2 = p2.matcher(table);String res2 = m2.replaceAll("");String regex3 ="(<FONT.*?>)";Pattern p3 = Pattern.compile(regex3,Pattern.CASE_INSENSITIVE);Matcher m3 = p3.matcher(res2);String res3= m3.replaceAll("");String regex4 ="(</FONT>)";Pattern p4 = Pattern.compile(regex4,Pattern.CASE_INSENSITIVE);Matcher m4 = p4.matcher(res3);String res4= m4.replaceAll("");String regex5 = "<INPUT.*?>";Pattern p5 = Pattern.compile(regex5,Pattern.CASE_INSENSITIVE);Matcher m5 = p5.matcher(res4);String res5 = m5.replaceAll("");String regex6 = "<SCRIPT LANGUAGE=(.|\n|\r)*?</SCRIPT>";Pattern p6 = Pattern.compile(regex6,Pattern.CASE_INSENSITIVE);Matcher m6 = p6.matcher(res5);String res6 = m6.replaceAll("");String regex7 = "<TD[^>]*?style=\"DISPLAY: none\"[\\s\\S]*?>[\\s\\S]*?</TD>";Pattern p7 = Pattern.compile(regex7,Pattern.CASE_INSENSITIVE);Matcher m7 = p7.matcher(res6);String res7 = m7.replaceAll("");String regex14 = "<TR[^>]*?style=\"DISPLAY: none\"[\\s\\S]*?>[\\s\\S]*?</TR>";Pattern p14 = Pattern.compile(regex14,Pattern.CASE_INSENSITIVE);Matcher m14 = p14.matcher(res7);String res14 = m14.replaceAll("");String regex9 = "<tr.*?>";Pattern p9 = Pattern.compile(regex9,Pattern.CASE_INSENSITIVE);Matcher m9 = p9.matcher(res14);String res9 = m9.replaceAll("<TR>");System.out.println(res9);String regex12 = "(?i)<select.*?>.*?<option.*?selected=\"selected\".*?>(.*?)</option>.*?</select>";Pattern p12 = Pattern.compile(regex12,Pattern.CASE_INSENSITIVE);Matcher m12 = p12.matcher(res9);String res12 = m12.replaceAll("$1");xml.export(res12,response.getOutputStream());}%>
只需要加上获取option里面数据的正则就可以了。注意使用非贪婪匹配和$1占位符
String str = "<LABEL>是否需清理</LABEL></TH><TH colSpan=\"1\" rowSpan=\"1\" class=\"table_bg text-center\" style=\"word-break: keep-all; width: 149px; height: 30px;\"><LABEL>反馈结果</LABEL></TH><TH colSpan=\"1\" rowSpan=\"1\" class=\"table_bg text-center\" style=\"word-break: keep-all; width: 150px; height: 30px;\"><LABEL>不处理原因</LABEL></TH><TH colSpan=\"1\" rowSpan=\"1\" class=\"table_bg text-center\" style=\"word-break: keep-all; width: 90px; height: 30px;\"><LABEL>反馈日期</LABEL></TH></TR></THEAD><TBODY><TR><TD colSpan=\"1\"rowSpan=\"1\" class=\"\" align=\"center\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\"></TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">01001003_01</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">3333333310000</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">四川电力公司</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\"></TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">旧单位21</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">中国工商银行</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">基本账户</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">一般户</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\"align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">非直联</TD><TD colSpan=\"1\" rowSpan=\"1\"class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">正常</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">999.99</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">2020-03-04</TD><TD colSpan=\"1\" rowSpan=\"1\" class=\"\" align=\"left\" valign=\"middle\" style=\"vertical-align:middle;padding:0 5px 0 5px;\">";//list.set(i,line.replaceAll("\\sextends\\s+\\w+(?=(\\s+implements\\s+\\w+)?\\s?\\{)",""));String reg = "<select.*?>.*?<option.*?selected=\"selected\".*?>(.*?)</option>.*?</select>";System.out.println(str.replaceAll(reg,"$1"));
正则只保留括号里的内容相关推荐
- python花括号怎么取_Python如何正则提取第三层花括号()里的内容?
举例:我想把如下字符串中第三层花括号的内容提取出来{supportedBandCombination-r10{{{bandEUTRA-r103,bandParametersUL-r10{{ca-Ban ...
- php获取括号中的内容,PHP实现正则匹配所有括号中的内容
PHP实现正则匹配所有括号中的内容 正则表达式:(?<=[)[^]]+ 注:以匹配中文括号中内容为例,如果匹配非中文括号,则需要在括号前增加转义符 PHP实现示例: $strSubject = ...
- php 匹配括号的个数,php 正则匹配括号内容 PHP实现正则匹配所有括号中的内容
正则表达式:(?<=[)[^]]+ 注:以匹配中文括号中内容为例,如果匹配非中文括号,则需要在括号前增加转义符 PHP实现示例: $strSubject = "abc[111]abc[ ...
- php 正则 括号内容_PHP怎么实现正则匹配所有括号中的内容
PHP实现正则匹配所有括号中的内容的方法:首先创建一个PHP文件:然后输入PHP正则匹配代码,如:"preg_match_all($strPattern, $strSubject, $arr ...
- Java正则获取小括号中的内容_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...
获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private s ...
- wps如何删除括号里的内容_文档中怎么批量去除括号里面的答案 - 卡饭网
在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母? 步骤 1.点击office word2 ...
- [转]element-ui输入框(el-input)前缀图标和后缀图标(转载请删除括号里的内容)
el-input是element-ui中的一个组件,在element-ui中文手册中有详细的介绍.其中,带 icon 的输入框示例如下: 对应的代码是: <div class="dem ...
- [转]前端开发必备神级资源(转载请删除括号里的内容)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_43606158/arti ...
- python提取字符串括号里的内容
import reresult_list = re.findall(r"[(](.*?)[)]", "(123)")print(result_list [0]) ...
最新文章
- 邻接矩阵中啥时候写0和无穷_集合中的上极限与下极限
- 计算机组成原理 输入输出系统,计算机组成原理(第七章输入输出系统
- Shell脚本个例二
- 1354. 等差数列【一般 / 暴力枚举】
- 第二课--字符串类型及操作
- Ubuntu常用服务器环境搭建——MySQL篇
- java取模运算_Java的四则运算符与取模运算符
- 读取swagger配置文件里的内容
- Python入门--元组的创建,(),tuple()
- [转载] Python 字典删除元素clear、pop、popitem
- linux客户端 手机,WAPI客户端在Linux系统中的实现
- PLC编程实例(一) 基本电路
- multisim变压器反馈式_基于Multisim 负反馈放大电路的仿真实验分析
- 泛克里金方法的实际应用——小试牛刀
- 葵花宝典第一招:唐氏均线成交量参数
- 【毕业设计】基于Arduino的智能灌溉系统 - 嵌入式 单片机 物联网
- 一网打尽win10 Google Chrome浏览器打开后默认 桔梗 页面
- Linux就这个范儿 第13章 打通任督二脉
- 读松下幸之助自传有感
- 一个关于SDWAN单臂部署方案验证的实验
热门文章
- 个人永久性免费-Excel催化剂功能第83波-遍历文件夹内文件信息特别是图像、音视频等特有信息...
- 关于NX/UG使用KF二次开发的常用方法
- 北大计算机学霸,揭秘:2018北大在京录取的学霸们有何特长(组图)
- cym : BaseQuickAdapter.setOnItemChildClickListener失效点击没反应
- ubuntu命令行使用wget下载百度云资源
- 解决ImportError: sys.meta_path is None, Python is likely shutting down.问题
- HTML基础知识点总结三
- docker安全配置(cpu、分区的大小设定和权限设定)
- 标题、首图、详情页:三位一体的搜索优化技巧
- Android游戏集成豌豆荚支付