我有一个由元素组成的字符串。每个元素可以包含“pear”或“apple”。我可以使用以下方法获取所有元素:
s = '<tag>uTSqUYRR8gapple</tag><tag>K9VGTZM3h8</tag><tag>pearTYysnMXMUc</tag><tag>udv5NZQdpzpearz5a4oS85mD</tag>'
import re; re.findall("<tag>.*?</tag>", s)
但是,我想得到最后一个包含pear的元素。最简单/最快的方法是什么?这是一个好方法:
list = re.findall("<tag>.*?</tag>", s)
list.reverse()
last = next(x for x in list if re.match('.*pear', x))
re.match('<tag>(.*)</tag>', last).group(1)
还是应该改用解析器?你知道吗
使用解析器,例如^{} :
这将设置dom并查找文本与regex
pear
匹配的所有标记(按字面意思查找“pear”。见a demo on ideone.com。你知道吗
使用适当的XML库可以使用XPath来封装查询。例如:
…对于它,
result
将包含,对于给定的输入数据,['udv5NZQdpzpearz5a4oS85mD']
。在这种情况下,您不需要在自己的代码中搜索最后一项,但可以依靠XPath引擎(用C实现,作为libxml的一部分)来完成这项工作。你知道吗相关问题 更多 >
编程相关推荐