正则的一个问题,大侠帮忙啊

2012-08-23 17:42:50 +08:00
 richiefans
目前用的这个正则 <[a|A][^<>]href=\"([^\"]+)\"[^<>]>([^<>]+)<\/[a|A]>
可以匹配出诸如

<a href="url1.html">text1</a>
<a href="url1.html" target="_blank">text1</a>
<a class="c1" href="url1.html">text1</a>

目前发现在获取text的时候 有以下问题
如果是

<a href="url.html"><span>链接1</span></a>

就没办法获取了
请大侠帮忙解决下
或者有没有比较通用的提取链接的正则 目前在用python 不过正则应该没太大区别吧
3334 次点击
所在节点    程序员
9 条回复
yangg
2012-08-23 17:56:04 +08:00
匹配所有的,非贪婪

<[a|A][^<>]href=\"([^\"]+)\"[^<>]>([\s\S]*?)<\/[a|A]>
kamal
2012-08-23 19:30:04 +08:00
sivacohan
2012-08-23 19:40:42 +08:00
python有urllib2,用来提取很方便。不然总会因为标签包含问题
或者你可以分为两部或者几步完成。第一步和一楼的一样。第二部,去查询之前第一步生成的结果集都保护哪些标签。

正则有一个问题就是你必须明确你有处理的文本情况。个人建议是逐步细化。
zxyzxy12321
2012-08-23 20:56:50 +08:00
ljbha007
2012-08-23 21:07:23 +08:00
1楼正解 这个问题我以前也纠结了很久 用懒惰匹配到</a>为止即可,否则直接用[\s\S]的话会匹配到最后一个</a>为止
rightgenius
2012-08-24 10:34:41 +08:00
@zxyzxy12321 这链接太强大了!stackoverflow上的人真是大湿啊!
reus
2012-08-24 10:42:51 +08:00
可以用lxml来解析html,比正则方便很多
hyq
2012-08-24 10:44:50 +08:00
可以用SGML來處理HTML
hyq
2012-08-24 10:46:00 +08:00
另外,寫正則的時候,加個大小寫不敏感的flag,就不用判斷a|A

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/45874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX