我试图做一个正则表达式只是从此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>
... ''')


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

最佳答案

就像@ Jon Clements所说的那样,.match()仅在表达式应该从字符串的开头开始运行时起作用,.search()在字符串中搜索第一个匹配项,而.findall()搜索所有匹配项。

但是无论如何,您都应该将正则表达式略微修改为更易读的版本:

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


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

关于python - Python Regex:这有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13451173/

10-12 07:29