Шаблон регулярного выражения Python, соответствующий тексту внутри строки xml - PullRequest
0 голосов
/ 20 декабря 2018

Я анализирую 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 голосов
/ 20 декабря 2018

По моему мнению, вам лучше использовать синтаксический анализатор 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
0 голосов
/ 20 декабря 2018

Это регулярное выражение работает для контрольного примера в вашем вопросе -

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

Вы можете проверить его здесь -

https://regex101.com/

0 голосов
/ 20 декабря 2018

Вы можете попробовать что-нибудь попроще:

re.sub(r'<.*?>', '', str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...