关于标记的正则表达式

macrotea-cn 2009-11-14 03:14:07
网页源码中,通常有这三种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种那种形式。

请高手指教。十分感谢。
我还想请问《精通正则表达式》这本书如何?你们有接触过吗,我想买来看看。
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2009-11-14
  • 打赏
  • 举报
回复
String str = "(?i)<img\\b[^>/]*(?:/>|>(?:[^<]*</img>)?)";
loveofmylife 2009-11-14
  • 打赏
  • 举报
回复
呵呵,一本好书,不过我还没看完,看之前你会感觉自己还行,看之后你就觉得自己有多菜了
wanli209 2009-11-14
  • 打赏
  • 举报
回复
up
closewbq 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 myxiao7 的回复:]
看来火龙果是其中大收益人啊,感受这么深,好的,我会去买正版的。
其实十分佩服火龙果,只要是提到正则的地方,都有他在。呵呵

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'>

问题回到了我提问的问题了。呵呵。加油。
[/Quote]


public class RegexTest {
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());
}
}
macrotea-cn 2009-11-14
  • 打赏
  • 举报
回复
看来火龙果是其中大收益人啊,感受这么深,好的,我会去买正版的。
其实十分佩服火龙果,只要是提到正则的地方,都有他在。呵呵

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'>

问题回到了我提问的问题了。呵呵。加油。
  • 打赏
  • 举报
回复
这是颠峰之作,不建议看盗版电子书,建议去买实体书!
  • 打赏
  • 举报
回复
《精通正则表达式》是正则表达式的登峰造极之作,只要有这本书存在,其他作者几乎都不再涉足这一领域了。
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
closewbq 2009-11-14
  • 打赏
  • 举报
回复

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());
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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