是否有可能匹配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值(例如,如上例所示的6556):
<ns3:createGroupMessageRes>
<ns3:statusCode>XXX</ns3:statusCode>
<ns3:messageId>XXXX</ns3:messageId>
</ns3:createGroupMessageRes>
我尝试了很多可能的表达方式,但没有一个能够奏效。感谢您提供任何帮助!
答案 0 :(得分:0)
请试试这个:
# 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>']