怎么用正则表达式去掉隐藏的tr

shen2008biye 2014-09-05 10:49:50
String str= "<TR></TR>"
+"<TR id=tableCopy_GTIS_INVEST_FINAN_LIST style=\"DISPLAY: none\" id=tableCopy_GTIS_INVEST_FINAN_LIST>"
+"<TD style=\"PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px\" vAlign=middle noWrap align=right></TD></TR>"
+"<TR></TR>";

如上是用来生成html的片段,现在有3行,我想通过正则表达式去掉含有style=\"DISPLAY: none\"的tr,然后保留剩下的两行。
System.out.println(str.replaceAll("<TR.*?style=\"DISPLAY: none\".*?>.*?</TR>", ""));
结果把第一行也删除了,郁闷中。求大虾们帮帮我。
...全文
232 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sca4441479 2014-09-09
  • 打赏
  • 举报
回复

String str= "<TR></TR>" 
			+"<TR id=tableCopy_GTIS_INVEST_FINAN_LIST style=\"DISPLAY: none\" id=tableCopy_GTIS_INVEST_FINAN_LIST>"
			+"<TD style=\"PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px\" vAlign=middle noWrap align=right></TD></TR>"
			+"<TR></TR>";
		final String REGEX=".*</TR>(<TR.*style=\"DISPLAY: none\".*</TR>)<TR>.*";
		Matcher m=Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE).matcher(str);
		if(m.find()){
			System.out.println(str.replace(m.group(1),""));
		}
解决了最好,也可以看看这个。
shen2008biye 2014-09-09
  • 打赏
  • 举报
回复
解决了,楼上两位是正解,我做的功能是讲页面元素读取出来,转化成字符串,然后导出成excel,转化为字符串的时候,为了便于查看,用了换行符,而正则里面的"."不包含换行符,只要把"."换成[\s\S]成了。谢谢二位。
shen2008biye 2014-09-09
  • 打赏
  • 举报
回复
谢谢两位大虾,但是我表达的有点错误,其实第一个和第三个TR我只是表示行的意思,他们也有自己的属性,我想表达的是怎么把隐藏行去掉,就是里面包含有style=\"DISPLAY: none\"的TR
blackze 2014-09-08
  • 打赏
  • 举报
回复
1L的答案可以,但是请容我在鸡蛋里挑一下骨头,请末见怪 LZ给的正则的错误的地方在于<TR.*? 因为 . 是包含<>的,所以<tr></tr><tr style=.... 也是可以成立的 所以应该改成<tr[^>]*?style=\"DISPLAY: none\".*?>.*?</TR>
Kenney_Qin 2014-09-07
  • 打赏
  • 举报
回复
在<TR后面加个空格就行了,因为第二行的TR后有空格,其他两行没有,所以就不会匹配其它两行。
<TR .*?style=\"DISPLAY: none\".*?>.*?</TR>

50,550

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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