Python正则表达式模式以匹配xml字符串中的文本

时间:2018-12-20 19:06:46

标签: python regex xml

我正在解析XML文件,需要从最终输出中消除一些混乱。

str = <?xml version="1.0" encoding="UTF-8" standalone="yes"?><chat-message>2018-10

我试图解决的问题是:

re.sub(r'<(\w|\d|\s){1,}>{1,4}',"",str)

我想要的输出是:

  

2018-10

目前,Python找不到匹配项,只是返回str。我认为<>不是特殊字符,因此不需要转义。无论如何,我都尝试过转义,但仍然无法正常工作。

3 个答案:

答案 0 :(得分:4)

我认为您最好使用XML解析器而不是正则表达式。这是使用xml.etree.ElementTree的示例:

import xml.etree.ElementTree as ET

xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><chat-message>2018-10</chat-message>'
root = ET.fromstring(xmlstring)

print(root.text)
# OUTPUT
# 2018-10

答案 1 :(得分:1)

您可以尝试更简单的方法:

re.sub(r'<.*?>', '', str)

答案 2 :(得分:0)

此正则表达式适用于您问题中的测试用例-

r"<[\w\D]+>([-\d]+)"

您可以在这里进行测试-

https://regex101.com/