python匹配多个a标签中的内容
本人新手知道使用re.match可以返回自定义的群组比如#!/usr/bin/pythonimportreline="Catsaresmarterthandogs";ma...
本人新手 知道使用 re.match 可以返回自定义的群组 比如
#!/usr/bin/python
import re
line = "Cats are smarter than dogs";
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print matchObj.group()
print matchObj.group(1)
print matchObj.group(2)
以上实例执行结果如下:
matchObj.group(1) : Cats
matchObj.group(2) : smarter
现在的问题是 我如何通过正则匹配多个a标签中的内容并返回一个列表 这样我希望可以一个一个的从列表中拿到匹配的内容结果
比如
<a>qq</a> <a>dd</a> sth
<a>ww</a>
像上面这种很形式 拿到一个 list['qq', 'dd', 'ww'] 就行 总之先谢谢。。 展开
#!/usr/bin/python
import re
line = "Cats are smarter than dogs";
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print matchObj.group()
print matchObj.group(1)
print matchObj.group(2)
以上实例执行结果如下:
matchObj.group(1) : Cats
matchObj.group(2) : smarter
现在的问题是 我如何通过正则匹配多个a标签中的内容并返回一个列表 这样我希望可以一个一个的从列表中拿到匹配的内容结果
比如
<a>qq</a> <a>dd</a> sth
<a>ww</a>
像上面这种很形式 拿到一个 list['qq', 'dd', 'ww'] 就行 总之先谢谢。。 展开
1个回答
展开全部
In [5]: re.findall(r'(?<=\<a\>).*?(?=\<\/a\>)','<a>that</a> <a>here</a>')
Out[5]: ['that', 'here']
这样的情况,用findall返回的正好是list。
正则表达式的意义:
(?<=XXX) 表示前面的内容是XXX,但结果中不包含;
.*?表示匹配0到多个任意字符,但是匹配尽量短的;
(?=YYY)表示后面的内容是YYY,但结果中不包含。
注意:XXX和YYY的长度必须是固定的。
要是处理的标签多的话,用BeautifulSoup吧,方便些。
追问
谢谢你 我刚学python 很多不太明白 你那个 In [5] 和 Out[5] 是关键字么 还是自己随便定义的列表名字? 怎么看着很像 c++ 的那个 cin>> cout<< 可以稍微解释下么 谢喵..
追答
不好意识,懒了一下直接复制过来了,我应该把那两个东西 去掉的。那是ipython命令窗口的输入和输出标志,本身没有意义的。自然是冒号之后的才是代码。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询