繁体   English   中英

Python Regex:这有什么问题?

[英]Python Regex : What's wrong with this?

我试图做一个正则表达式只是从此XML获取错误代码。

>>> re_code = re.compile(r'<errorcode>([0-9]+)</errorcode>', re.MULTILINE)
>>> re_code.match('''<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
... <methoderesponse>
...     <status>
...         <message/>
...         <errorcode>515</errorcode>
...         <value>ERROR</value>
...     </status>
... </methoderesponse>
... ''')

应该很容易。 但是我不明白为什么它不匹配。

.match()尝试在开始时进行匹配。 你想.search()或更可能.findall()

不过,请看一下XML解析器-使用XPath或等效工具来获取数据要好得多(而且它将处理正则表达式所不能提供的细微差别)

与示例XML一起使用的示例:

import xml.etree.ElementTree as ET
tree = ET.fromstring(text)

>>> tree.findall('.//errorcode')[0].text
'515'

有关ElementTree的更多信息,我将亲自检查lxml

如@ 乔恩克莱门茨说, .match()如果表达式应该从字符串的开头只运行工作, .search()搜索第一次出现的字符串, .findall()对所有出现的搜索。

但是无论如何,您都应该对正则表达式进行一些修改,使其更具可读性:

regex = re.compile(r'<errorcode>(\d+)</errorcode>')

您不需要re.MULTILINE参数,它与这个问题无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM