Out[5]: ['that', 'here']
这样的情况,用findall返回的正好是list。
正则表达式的意义:
(?<=XXX) 表示前面的内容是XXX,但结果中不包含;
.*?表示匹配0到多个任意字符,但是匹配尽量短的;
(?=YYY)表示后面的内容是YYY,但结果中不包含。
注意:XXX和YYY的长度必须是固定的。
要是处理的标签多的话,用BeautifulSoup吧,方便些。
其实这种问题,用正则表达式处理,非常简单。
# -*- coding: utf-8 -*-s=u"""
<body>
<p>
<t>T1标签</t>
<t>T2标签</t>
</p>
</body>
"""
import re
labels= re.findall(r"<t>[\S]*</t>",s) #\S是非空白字符的意思
#labels= re.findall(r"(?<=<t>)[\S]*(?=</t>)",s) #这个是稍微高级点的用法
for i in labels:
print i
输出结果:
<t>T1标签</t>
<t>T2标签</t>
但是如果用单纯的循环查找,就很复杂了,如果你坚持,可以借鉴括号配对的算法。