网页源码中,通常有这三种img标记的形式,第一种不太规范,但它也不影响显示图片1.<img href='www.baidu.com' id='new'>2.<img href='www.google.com' id='new'/>3.<img href='www.baidu.com' id='new'>图片</img>
如何用一个正则表达式把这三种类型的img提取出来,我当时写的正则表达式能把2,3这两种能提取出来。
但是碰到了第1种就出现了问题了。不知道如何提取,问题在于:在第3种的形式上也包含了第1种,我希望当碰到第三种的时候只提取第3种而忽略第1种那种形式。请高手指教。十分感谢。
我还想请问《精通正则表达式》这本书如何?你们有接触过吗,我想买来看看。
如何用一个正则表达式把这三种类型的img提取出来,我当时写的正则表达式能把2,3这两种能提取出来。
但是碰到了第1种就出现了问题了。不知道如何提取,问题在于:在第3种的形式上也包含了第1种,我希望当碰到第三种的时候只提取第3种而忽略第1种那种形式。请高手指教。十分感谢。
我还想请问《精通正则表达式》这本书如何?你们有接触过吗,我想买来看看。
public class RegexTest {
public static void main(String[] args) {
String[] strs = { "<img href='www.baidu.com' id='new'>sdfsdf<a></a>",
"<img href='www.google.com' id='new'/>asdasdasd<tr></tr>",
"<img href='www.baidu.com' id='new'>图片</img><body></body>" };
Pattern p = Pattern.compile("<img[^>]*>(.*</img>)?");
Matcher m = null;
for (String str : strs) {
m = p.matcher(str);
while (m.find())
System.out.println(m.group());
}
}
}
精通正则电子版的 去下吧
其实十分佩服火龙果,只要是提到正则的地方,都有他在。呵呵closewbq,感谢你的回答。
但是我用的测试的字符串是:String str="你不<img href='www.baidu.com' id='new'>是吧abc<img href='www.google.com' id='new'/>图片<img href='www.csdn.com' id='new'>点击跳转</img>";当这样的时候就有问题了, <img href='www.csdn.com' id='new'>点击跳转</img> 这个没有提取了,只提取了:<img href='www.csdn.com' id='new'>问题回到了我提问的问题了。呵呵。加油。
public static void main(String[] args) {
String str = "你不 <img href='www.baidu.com' id='new'>是吧abc <img href='www.google.com' id='new'/>图片 <img href='www.csdn.com' id='new'>点击跳转 </img>";
Pattern p = Pattern.compile("<img[^>]*>(.[^<]*</img>)?");
Matcher m = p.matcher(str);
while (m.find())
System.out.println(m.group());
}
}