【发布时间】:2017-05-22 21:05:32
【问题描述】:
字符串:'<td attr="0">str1</td><td attr="5">str2</td><td attr="7">str2</td><td attr="9">str4</td>'
我只想搜索并获得第一个包含文本的“td”标签:“str2”。所以我尝试了两种不同的非贪婪表达式,如下所示:
>>> mystring = '<td attr="0">str1</td><td attr="5">str2</td><td attr="7">str2</td><td attr="9">str4</td>'
>>> print re.search("(<td.*?str2.*?</td>)",mystring).group(1)
<td attr="0">str1</td><td attr="5">str2</td>
>>> print re.search(".*(<td.*?str2.*?</td>).*",mystring).group(1)
<td attr="7">str2</td>
这里我期望输出为"<td attr="5">str2</td>",因为我在正则表达式中使用了非贪婪表达式。这里有什么问题以及如何获取预期的搜索结果?
注意:我不能使用 html 解析器,因为我的实际数据集没有那么多格式用于 xml 解析
【问题讨论】:
标签: regex python-2.7 regex-greedy non-greedy