正则表达式匹配不连续

liutaoaisi 2016-08-23 01:57:20
想匹配如下的内容,虽然可以通过多次字符串截取实现,但是想用正则表达式来实现,欢迎各位大牛来帮忙。
想直接匹配出来<li></li>中UID=后面的内容,但是外面的那个就UID不需要匹配。
谢谢各位。

<a href="/en/UID=0000">C</a>
<ul class="tree">

<li class="tree"><a href="/en/UID=1111">CHENi</a></li>

<li class="tree"><a href="/en/UID=3333">HUANG</a></li>

<li class="tree"><a href="/en/UID=2222">Zhang</a></li>

</ul>
...全文
944 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
coby002 2016-08-24
  • 打赏
  • 举报
回复
引用 楼主 liutaoaisi 的回复:
想匹配如下的内容,虽然可以通过多次字符串截取实现,但是想用正则表达式来实现,欢迎各位大牛来帮忙。 想直接匹配出来<li></li>中UID=后面的内容,但是外面的那个就UID不需要匹配。 谢谢各位。 <a href="/en/UID=0000">C</a> <ul class="tree"> <li class="tree"><a href="/en/UID=1111">CHENi</a></li> <li class="tree"><a href="/en/UID=3333">HUANG</a></li> <li class="tree"><a href="/en/UID=2222">Zhang</a></li> </ul>
import re

html = '''<a href="/en/UID=0000">C</a>
<ul class="tree">

<li class="tree"><a href="/en/UID=1111">CHENi</a></li>

<li class="tree"><a href="/en/UID=3333">HUANG</a></li>

<li class="tree"><a href="/en/UID=2222">Zhang</a></li>
</ul>'''

ptn = re.compile(r'<li[^>]*?class="tree".*?'
                 r'href="/en/UID=([^"]*)">'
                 r'([^<]*).*?</li>'
                 ,re.S)
mch = ptn.findall(html)
print(mch)
[('1111', 'CHENi'), ('3333', 'HUANG'), ('2222', 'Zhang')]
sprawling 2016-08-23
  • 打赏
  • 举报
回复
sprawling 2016-08-23
  • 打赏
  • 举报
回复
#!/usr/bin/python
# -*- coding:utf-8 -*-

import re

f1 = open('t1.txt','r').readlines()
i=0
p1 = re.compile(r'<li class="tree"><a href="/en/UID=(\d{4})">(\w+)</a></li>')
for line in f1:
    res = p1.search(line)
    if(res):
        print res.groups()
        print line
#    print i,line

#print f1

37,720

社区成员

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

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