是否有可能在XML标记之间匹配某些内容,这取决于特定的值。要匹配的代码:
<data>
<ns3:createGroupMessageRes>
<ns3:statusCode>200</ns3:statusCode>
<ns3:messageId>65683</ns3:messageId>
</ns3:createGroupMessageRes>
</data>
<data>
<ns3:createGroupMessageRes>
<ns3:statusCode>200</ns3:statusCode>
<ns3:messageId>65685</ns3:messageId>
</ns3:createGroupMessageRes>
</data>
我希望匹配该部分,但取决于messageID值(例如,上面示例中的65685):
<ns3:createGroupMessageRes>
<ns3:statusCode>XXX</ns3:statusCode>
<ns3:messageId>XXXX</ns3:messageId>
</ns3:createGroupMessageRes>
我尝试了很多可能的表达方式,但都不起作用。感谢您的任何帮助!
发布于 2016-03-03 20:34:51
请尝试以下操作:
# tested with python 2.7x
import re
stringIn = """
<data>
<ns3:createGroupMessageRes>
<ns3:statusCode>200</ns3:statusCode>
<ns3:messageId>65683</ns3:messageId>
</ns3:createGroupMessageRes>
</data>
<data>
<ns3:createGroupMessageRes>
<ns3:statusCode>200</ns3:statusCode>
<ns3:messageId>65685</ns3:messageId>
</ns3:createGroupMessageRes>
</data>
"""
q = lambda mId: [ block[1] for block in re.findall(r'<(?P<p>[^>]+)>\n((?:\s*<ns3:.*)*>%i</ns3:messageId>\s+</ns3:.*)\s+</(?P=p)>' % (mId), stringIn) ]
print q(65685)
输出:
[' <ns3:createGroupMessageRes>
<ns3:statusCode>200</ns3:statusCode>
<ns3:messageId>65685</ns3:messageId>
</ns3:createGroupMessageRes>']
https://stackoverflow.com/questions/35775107
复制