求正则表达式匹配

Oliver5914 2017-07-28 10:59:02
<html>
<body>
<div class="inner">
<dl class="c1">
<dd><a href="1.html">1</a></dd>
<dd><a href="2.html">2</a></dd>
<dl class="c2">
<dd><a href="3.html">2</a></dd>
<dd><a href="4.html">4</a></dd>
</dl>
</div>
</body>
</html>

需求:
一个正则表达式,匹配出 class=“c2” 下的所有链接,也就是 匹配出 3.html 和4.html
...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oliver5914 2018-01-25
  • 打赏
  • 举报
回复
(?![\s\S]*?class="c2")<a href="([^"]+)"


Oliver5914 2018-01-25
  • 打赏
  • 举报
回复
(?![\s\S]*?class="c2")<a href="([^"]+)"


chuifengde 2017-07-28
  • 打赏
  • 举报
回复
一次匹配不好搞,两次吧
sanGuo_uu 2017-07-28
  • 打赏
  • 举报
回复
比如像这样:
#-*-coding:utf-8-*-

import re

txt='''
<html>
<body>
<div class="inner">
<dl class="c1">
<dd><a href="1.html">1</a></dd>
<dd><a href="2.html">2</a></dd>
</dl>
<dl class="c2">
<dd><a href="3.html">2</a></dd>
<dd><a href="4.html">4</a></dd>
</dl>
</div>
</body>
</html>
'''

patt1=re.compile(r'class="c2"(.*?)</dl>',re.S)
patt2=re.compile(r'<a href="(.*?)">',re.S)
results=patt1.findall(txt)

for res in results:
	tmpHREF=patt2.findall(res)
	for href in tmpHREF:
		print href
sanGuo_uu 2017-07-28
  • 打赏
  • 举报
回复
没法直接用正则,就一步匹配出来。 如果是用程序的话(python),可以先匹配出class=“c2” ,这是个数组,再循环匹配里面的链接。 要直接匹配链接,就用到(), 建议去了解下findall和正则的()
Oliver5914 2017-07-28
  • 打赏
  • 举报
回复


这个正则可以把链接全部匹配出来,但是不懂怎么才能 匹配 指定div的链接,求高人指导

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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