以下是我用java读取的一段HTML代码,希望能够通过标记<!--pic1-->读取里面的aaaaaaaaaaa.cccccccccccc.bbbbbbbbbbb,这是一些路径,
我知道正则表达式能实现这样的功能,但对我来说太复杂,希望大家帮帮我<TR>
<TD>
<!--pic1--><a onMouseOver="MM_swapImage('Image6','','aaaaaaaaaaa',1)" onFocus="this.blur()" onMouseOut="MM_swapImgRestore()" target="_blank" href="cccccccccccc"><IMG height=164 src="bbbbbbbbbbb" width=156 border=0 name=Image6></a><!--pic11-->
</TD>
<TD>
<!--pic2--><a onMouseOver="MM_swapImage('Image7','','aaaaaaaaa',1)" onFocus="this.blur()" onMouseOut="MM_swapImgRestore()" target="_blank" href="aaaaaaaaa"><IMG height=164 src="aaaaaaaaa" width=156 border=0 name=Image7></a><!--pic22-->
</TD>
</TR>
我知道正则表达式能实现这样的功能,但对我来说太复杂,希望大家帮帮我<TR>
<TD>
<!--pic1--><a onMouseOver="MM_swapImage('Image6','','aaaaaaaaaaa',1)" onFocus="this.blur()" onMouseOut="MM_swapImgRestore()" target="_blank" href="cccccccccccc"><IMG height=164 src="bbbbbbbbbbb" width=156 border=0 name=Image6></a><!--pic11-->
</TD>
<TD>
<!--pic2--><a onMouseOver="MM_swapImage('Image7','','aaaaaaaaa',1)" onFocus="this.blur()" onMouseOut="MM_swapImgRestore()" target="_blank" href="aaaaaaaaa"><IMG height=164 src="aaaaaaaaa" width=156 border=0 name=Image7></a><!--pic22-->
</TD>
</TR>
解决方案 »
- java中多线程七种状态 如何理解 以及状态之间的转换条件
- 这个是什么时间格式2008-09-25T09:30:47.0Z ?
- 如何修改JFrame的标题栏?
- Timer中得任务出了异常怎么捕获?
- 谁有java Swing教程,
- TB里无法打开APPLET
- 如何连续访问两个连接?
- JBUILDER6.0在WIN2000 PROFESSION下安装,但是JAVA文件没有和JBUILDER关联这是什么原因?
- 如果一个类有内部类,且main方法定义在内部类中,这个程序应该怎么运行???
- 为什么不能这样构造:Timestamp t = new Timestamp(2000,1,1,15,45,29,987245732);????
- RMI 中客户端程序能和服务端程序保持 长链接吗?
- netbeans-6.0m9-full-windows.exe安裝出錯,請解決
htmlContent.substring(htmlContent.indexOf("<!--pic1-->") + 11,htmlContent.indexOf("<!--pic11-->"));
表达式2:MM_swapImage\(\s*[^\)]*,[^\)]*,([^\)]*),[^\)]*\s*\)\s 找出MM_swapImage函数里的参数group 1
表达式3:[href|src]\s*=\s*"([\w]*)\s*" 找出href或src属性的值。
表达式2,3要在表达式1完成的基础上寻找。初学正则表达式。望个位高手指点。呵呵
越详细写出来的表达式越能满足要求。比如,在你的问题中:1,路径是不是全都是按照 img MM_swapImage、a href、img src 顺序的,如果这个条件
不满足那就没办法使用正则表达式来完成。
2,<!--pic1--> ... <!--pic11--> 之间的东西是不是全都是一种模式的,如果不是也没
办法做。
3,<!--pic1--> ... <!--pic11--> pic 的格式:1 开始,就用 11 结束,如果 10 开始
用啥结束,用 1010?
public static void testRegex(){
String source = "<TR> " +
" <TD> " +
"<!--pic1--> <a onMouseOver= \"MM_swapImage( 'Image6 ', ' ', 'aaaaaaaaaaa ',1) \" onFocus= \"this.blur() \" onMouseOut= \"MM_swapImgRestore() \" target= \"_blank \" href= \"cccccccccccc \"> <IMG height=164 src= \"bbbbbbbbbbb \" width=156 border=0 name=Image6> </a> <!--pic11--> " +
" </TD> "+
" <TD> "+
" <!--pic2--> <a onMouseOver= \"MM_swapImage( 'Image7 ', ' ', 'aaaaaaaaa ',1) \" onFocus= \"this.blur() \" onMouseOut= \"MM_swapImgRestore() \" target= \"_blank \" href= \"aaaaaaaaa \"> <IMG height=164 src= \"aaaaaaaaa \" width=156 border=0 name=Image7> </a> <!--pic22--> "+
" </TD> "+
"</TR>";
String regex = "<!--pic1--> <a.*?\"MM_swapImage.*?', ' ', '(.*?)'.*?href= \"(.*?)\"> <IMG.*?src= \"(.*?)\" width.*?</a> <!--pic11-->";
Pattern p = Pattern.compile(regex, Pattern.DOTALL + Pattern.MULTILINE);
Matcher m = p.matcher(source);
while (m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
}
取出所有url:
String regex = "<a.*?\"MM_swapImage.*?', ' ', '(.*?)'.*?href= \"(.*?)\"> <IMG.*?src= \"(.*?)\" width.*?</a>";
取出<!--pic1-->段的url:
String regex = "<!--pic1--> <a.*?\"MM_swapImage.*?', ' ', '(.*?)'.*?href= \"(.*?)\"> <IMG.*?src= \"(.*?)\" width.*?</a> <!--pic11-->";
取出<!--pic2-->段的url:
String regex = "<!--pic2--> <a.*?\"MM_swapImage.*?', ' ', '(.*?)'.*?href= \"(.*?)\"> <IMG.*?src= \"(.*?)\" width.*?</a> <!--pic12-->";