我试图检索包含“名称”字段的所有标签,然后处理整个句子加上名称。
这是我的测试代码:
sourceCode = '<dirtfields name="one" value="stuff">\n<gibberish name="two"\nwewt>'
namesGroup = re.findall('<.*name="(.*?)".*>', sourceCode, re.IGNORECASE | re.DOTALL)
for name in namesGroup:
print name
哪个输出是:
two
我想要寻找的输出是
['<dirtfields name="one" value="stuff">', 'one']
['<gibberish name="two"\nwewt>', 'two']
编辑:
找到了一种方法来做到这一点,感谢 doublesharp 提供了更干净的方法来获取“名称”值。
namesGroup = re.findall(r'(<.*?name="([^"]*)".*?>)', sourceCode, re.IGNORECASE | re.DOTALL)
这将输出:
('<dirtfields name="one" value="stuff">', 'one')
('<gibberish name="two"\nwewt>', 'two')
你的正则表达式有点不对劲 - 你匹配太多了(一直到最后一个>
)。因为您只需要在双引号之间输入值name=
使用以下模式:
name="([^"]*)"
-
name="
与您要查找的属性的第一部分匹配
-
([^"]*)
根据任何字符创建分组匹配not双引号
-
"
匹配 name 属性值后面的双引号。
你的代码看起来像这样(最好的形式是包含一个r
在你的模式之前):
namesGroup = re.findall(r'name="([^"]*)"', sourceCode, re.IGNORECASE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)