我有这个xml字符串
<aof xmlns="http://tsng.jun.net/jppos/conig/hello"><num>3</num><desc>addy02</desc><tpcs>5</tpcs></aof>'
我需要使用正则表达式提取5。
我所做的是:
regex = re.compile(r'tag+</.+>\s*(.+)\s*<.+>')
标签是'tpcs' 但它返回空标签。
有人可以帮忙。
答案 0 :(得分:2)
Don't use regexps for XML / HTML! Read this,投票最多的人之一本网站排名最高的答案!
改为使用XPath:
//tpcs/text()
或(namespace-gnostic):
//*[local-name()='tpcs']/text()
将按预期打印5
。
答案 1 :(得分:-1)
正如评论中所述,这个正则表达式可以解决问题:
(?<=<tpcs>).*?(?=<\/tpcs>)
如this demo中所示。
说明:
(?<=<tpcs>)
是一个积极的后瞻(?&lt; = ...
),它断言某个字符串<tpcs>
放在要匹配的字符串之前。.*?
点匹配任何字符,零次或多次,因为它后跟*
。最后,它旁边的?
字符是一个懒惰的量词,这意味着它会匹配,直到第一次出现下一个。(?=<\/tpcs>)
是一个积极的前瞻(?= ...
),它断言字符串遵循模式。