现在要清除 <!--demoStar--> XX文字 <!--demoEnd> 注释标签可以保留 可以不保留
之间的文字, 保留table 的标签等;
本人写了一天正则, 搞不出来, 求高手帮忙 !~ 谢谢
以下是demo
<table border="0" width="650"><tbody><tr><td valign="top" rowspan="2" width="383">
<!--demoStart-->
<br /><div class="jfitv_cons"><dl><dt>稳定高速的宽带网络,是您的必然之选!</dt><dd>天翼宽带,覆盖广,上网快,覆盖广东98%地区,最高速率可达100M,下载大片,5G的文件原来耗时1小时,现在只需10分钟!</dd><dt>7×24小时的服务团队,给您最到位的支持!</dt><dd>10000号服务热线7×24小时不间断的售前售后服务,同时为您提供网上营业厅、掌上营业厅、短信营业厅、自助服务终端等多种服务方式,给您带来最贴心到位的服务与支持。</dd><dt>完善的客服渠道,第一时间解除您的疑虑!</dt><dd>包括10000号客服中心、网上营业厅、掌上营业厅、QQ客服和实体营业厅的客户服务渠道体系,完善实施"一站式服务"。</dd><dt>专业的售后服务团队,免除您后顾之忧!</dt><dd>广东电信覆盖率高达98%,在全省21地市分设有办事机构,依托这些办事机构建立起了能第一时间响应客户需求的售后服务网络,秉承"用户至上,用心服务"的理念,为您彻底免除后顾之忧。</dd></dl></div><!--demoEnd--></td><td height="206" valign="top" width="250"><!--demoStart--><img style="margin: 0px; float: none" alt="" src="http://172.18.8.6:8088/gdzhenqiEPG/userupload/null/20121109/20121109112640_J4Z_244x159.jpg" /><!--demoEnd--></td></tr><tr><td height="251" valign="top"> <!--demoStart--><br /><p class="hightlight">即日起至2012年12月31日,后付费融合套餐、单宽、e6用户均可使用9000积分换半年的高清宽带互联网视听(时尚包)。</p><br /><p class="hightlight">积分不够的用户还可以参加宽带互联网视听免费体验活动,预存宽带费用即可免费使用宽带互联网视听三个月!</p><!--demoEnd--></td></tr></tbody></table><p> </p><p> </p>
之间的文字, 保留table 的标签等;
本人写了一天正则, 搞不出来, 求高手帮忙 !~ 谢谢
以下是demo
<table border="0" width="650"><tbody><tr><td valign="top" rowspan="2" width="383">
<!--demoStart-->
<br /><div class="jfitv_cons"><dl><dt>稳定高速的宽带网络,是您的必然之选!</dt><dd>天翼宽带,覆盖广,上网快,覆盖广东98%地区,最高速率可达100M,下载大片,5G的文件原来耗时1小时,现在只需10分钟!</dd><dt>7×24小时的服务团队,给您最到位的支持!</dt><dd>10000号服务热线7×24小时不间断的售前售后服务,同时为您提供网上营业厅、掌上营业厅、短信营业厅、自助服务终端等多种服务方式,给您带来最贴心到位的服务与支持。</dd><dt>完善的客服渠道,第一时间解除您的疑虑!</dt><dd>包括10000号客服中心、网上营业厅、掌上营业厅、QQ客服和实体营业厅的客户服务渠道体系,完善实施"一站式服务"。</dd><dt>专业的售后服务团队,免除您后顾之忧!</dt><dd>广东电信覆盖率高达98%,在全省21地市分设有办事机构,依托这些办事机构建立起了能第一时间响应客户需求的售后服务网络,秉承"用户至上,用心服务"的理念,为您彻底免除后顾之忧。</dd></dl></div><!--demoEnd--></td><td height="206" valign="top" width="250"><!--demoStart--><img style="margin: 0px; float: none" alt="" src="http://172.18.8.6:8088/gdzhenqiEPG/userupload/null/20121109/20121109112640_J4Z_244x159.jpg" /><!--demoEnd--></td></tr><tr><td height="251" valign="top"> <!--demoStart--><br /><p class="hightlight">即日起至2012年12月31日,后付费融合套餐、单宽、e6用户均可使用9000积分换半年的高清宽带互联网视听(时尚包)。</p><br /><p class="hightlight">积分不够的用户还可以参加宽带互联网视听免费体验活动,预存宽带费用即可免费使用宽带互联网视听三个月!</p><!--demoEnd--></td></tr></tbody></table><p> </p><p> </p>
解决方案 »
- 数组
- 你们的jdk是什么版本,java 6 update 10以后的哪种比较稳定
- java.io.IOException: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。
- socket
- 很菜鸟的问题,关于构造函数的调用顺序,谁能从本质上解释一下啊?谢谢
- 哪位能介绍介绍jna?
- 问题问对地方了吗???
- 有两个小问题,help!
- 谁有sun的java 命名规范?在线等待给分
- Root exception is java.net.MalformedURLException: no protocol: iiop//localhost:1
- Ldap怎么样获得上级节点dn
- MyEclipse8.5打开就卡死了,什么情况?
1、定位截取出 <!--demoStar--> 和 <!--demoEnd> 之间的内容;
2、将这部分内容,清除掉标签以外的文字。
话说用正则似乎确实不怎么方便,还不如用有穷自动机原理自己写一个。
String str = "<table border='0' width='650'><tbody><tr><td valign='top' rowspan='2' width='383'><!--demoStart--><br /><div class='jfitv_cons'><dl><dt>稳定高速的宽带网络,是您的必然之选!</dt><dd>天翼宽带,覆盖广,上网快,覆盖广东98%地区,最高速率可达100M,下载大片,5G的文件原来耗时1小时,现在只需10分钟!</dd><dt>7×24小时的服务团队,给您最到位的支持!</dt><dd>10000号服务热线7×24小时不间断的售前售后服务,同时为您提供网上营业厅、掌上营业厅、短信营业厅、自助服务终端等多种服务方式,给您带来最贴心到位的服务与支持。</dd><dt>完善的客服渠道,第一时间解除您的疑虑!</dt><dd>包括10000号客服中心、网上营业厅、掌上营业厅、QQ客服和实体营业厅的客户服务渠道体系,完善实施'一站式服务'。</dd><dt>专业的售后服务团队,免除您后顾之忧!</dt><dd>广东电信覆盖率高达98%,在全省21地市分设有办事机构,依托这些办事机构建立起了能第一时间响应客户需求的售后服务网络,秉承'用户至上,用心服务'的理念,为您彻底免除后顾之忧。</dd></dl></div><!--demoEnd--></td><td height='206' valign='top' width='250'><!--demoStart--><img style='margin: 0px; float: none' alt='' src='http://172.18.8.6:8088/gdzhenqiEPG/userupload/null/20121109/20121109112640_J4Z_244x159.jpg' /><!--demoEnd--></td></tr><tr><td height='251' valign='top'> <!--demoStart--><br /><p class='hightlight'>即日起至2012年12月31日,后付费融合套餐、单宽、e6用户均可使用9000积分换半年的高清宽带互联网视听(时尚包)。</p><br /><p class='hightlight'>积分不够的用户还可以参加宽带互联网视听免费体验活动,预存宽带费用即可免费使用宽带互联网视听三个月!</p><!--demoEnd--></td></tr></tbody></table><p> </p><p> </p>";System.out.println(str.replaceAll("<!--demoStart-->.+<!--demoEnd-->", ""));
这个的话 如果遇到数据库 的html 有换行的 就失败
有没有方法解决?换行的问题?
String srcHtml = getSrcHtml();
java.util.regex.Pattern p_demo;
java.util.regex.Matcher m_demo;
String regEx_demo = "<!--[//s]*?demoStart[^-->]*?>[//s//S]*?<!--[//s]*?///[//s]*?demoEnd[//s]*?-->";
p_demo = Pattern.compile(regEx_demo, Pattern.CASE_INSENSITIVE);
m_demo = p_demo.matcher(srcHtml);
res = m_demo.replaceAll("");
<!--demoStart-->/S+<!--demoEnd-->这样不知道可以不?
"删除<!--demoStar--><!--demoEnd>之间的字,并保留其中所有表格的标签"
这个我看真心做不到(也许是我学的挫,等高人),
用两次正则,先取<!--demoStar--><!--demoEnd>之间的内容,然后再替换应该可以
顺带说一句:
"<!--[//s]*?demoStart[^-->]*?>[//s//S]*?<!--[//s]*?///[//s]*?demoEnd[//s]*?-->";
这个根本就是错的,
连[^-->]是什么意思都没弄清楚
就是 要 把<!--demoStar--><!--demoEnd>之间的内容 清空两次正则? 不太明白
小弟 正则 超级烂,见笑了
我的意思跟1楼一样,只能发别把demo这个标签之间的内容提出来,然后替换调换,再拼回字符串去
看看能不能用吧public static void main(String[] args) {
String content = "<table border=\"0\" width=\"650\">"
+ "<tbody><tr><td valign=\"top\" rowspan=\"2\" width=\"383\">"
+ "<!--demoStart-->"
+ "<br /><div class=\"jfitv_cons\"><dl><dt>稳定高速的宽带网络,是您的必然之选!</dt>"
+ "<dd>天翼宽带,覆盖广,上网快,覆盖广东98%地区,最高速率可达100M,下载大片,"
+ "5G的文件原来耗时1小时,现在只需10分钟!</dd>"
+ "<dt>7×24小时的服务团队,给您最到位的支持!</dt>"
+ "<dd>10000号服务热线7×24小时不间断的售前售后服务,同时为您提供网上营业厅、掌上营业厅、短信营业厅、自助服务终端等多种服务方式,给您带来最贴心到位的服务与支持。</dd>"
+ "<dt>完善的客服渠道,第一时间解除您的疑虑!</dt>"
+ "<dd>包括10000号客服中心、网上营业厅、掌上营业厅、QQ客服和实体营业厅的客户服务渠道体系,完善实施\"一站式服务\"。</dd>"
+ "<dt>专业的售后服务团队,免除您后顾之忧!</dt>"
+ "<dd>广东电信覆盖率高达98%,在全省21地市分设有办事机构,"
+ "依托这些办事机构建立起了能第一时间响应客户需求的售后服务网络,秉承\"用户至上,用心服务\"的理念,"
+ "为您彻底免除后顾之忧。</dd>"
+ "</dl></div><!--demoEnd--></td>"
+ "<td height=\"206\" valign=\"top\" width=\"250\">"
+ "<!--demoStart--><img style=\"margin: 0px; float: none\" alt=\"\" "
+ "src=\"http://172.18.8.6:8088/gdzhenqiEPG/userupload/null/20121109/20121109112640_J4Z_244x159.jpg\" />"
+ "<!--demoEnd--></td></tr><tr><td height=\"251\" valign=\"top\"> <!--demoStart-->"
+ "<br /><p class=\"hightlight\">"
+ "即日起至2012年12月31日,后付费融合套餐、单宽、e6用户均可使用9000积分换半年的高清宽带互联网视听(时尚包)。"
+ "</p><br /><p class=\"hightlight\">积分不够的用户还可以参加宽带互联网视听免费体验活动,预存宽带费用即可免费使用宽带"
+ "互联网视听三个月!</p><!--demoEnd-->" + "</td></tr></tbody></table>"
+ "<p> </p><p> </p>";
StringBuffer resultBuffer = new StringBuffer();
Pattern outerPattern = Pattern.compile("(?is)<!--demoStart-->.+?<!--demoEnd-->");
Pattern innerPattern = Pattern.compile("(?<=>)[^<]+?(?=<)");
Matcher outerMatcher = outerPattern.matcher(content);
while(outerMatcher.find()){
String innerContent = outerMatcher.group();
StringBuffer innerBuffer = new StringBuffer();
Matcher innerMatcher = innerPattern.matcher(innerContent);
while(innerMatcher.find()){
innerMatcher.appendReplacement(innerBuffer, "");
}
innerMatcher.appendTail(innerBuffer);
outerMatcher.appendReplacement(resultBuffer, innerBuffer.toString());
}
outerMatcher.appendTail(resultBuffer);
System.out.println(resultBuffer);
}结果是<table border="0" width="650"><tbody><tr><td valign="top" rowspan="2" width="383"><!--demoStart--><br /><div class="jfitv_cons"><dl><dt></dt><dd></dd><dt></dt><dd></dd><dt></dt><dd></dd><dt></dt><dd></dd></dl></div><!--demoEnd--></td><td height="206" valign="top" width="250"><!--demoStart--><img style="margin: 0px; float: none" alt="" src="http://172.18.8.6:8088/gdzhenqiEPG/userupload/null/20121109/20121109112640_J4Z_244x159.jpg" /><!--demoEnd--></td></tr><tr><td height="251" valign="top"> <!--demoStart--><br /><p class="hightlight"></p><br /><p class="hightlight"></p><!--demoEnd--></td></tr></tbody></table><p> </p><p> </p>
先好多谢 这位大侠给我这么多的指引!~
但我需要 <!--demoStart-->标签 到<!--demoEnd--> 中间的所有内容都需要 清空!~
那个代码 需要如何修改?
天跟你前面所说的完全不是一回事你顶楼要求的是“保留table 的标签等”,如果是全清空,会相对容易些。试试这样:
System.out.println(str.replaceAll("<!--demoStart-->(.|\\s)*<!--demoEnd-->", ""));
不行喔!~
报错
Exception in thread "main" java.lang.StackOverflowError
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3343)
你看这个能运行不System.out.println(content.replaceAll("(?is)<!--demoStart-->.+?<!--demoEnd-->", ""));
<table border="0" width="650"><tbody><tr><td valign="top" rowspan="2" width="383"></td><td height="206" valign="top" width="250"></td></tr><tr><td height="251" valign="top"> </td></tr></tbody></table><p> </p><p> </p>