用于XML中多个标签实例的正则表达式

时间:2014-11-27 14:49:10

标签: regex xml

我有一个我要解析的xml,继承人就是一个例子:

<server name="thisServer" dns="...".....>
...
<path>firstPath</path>
<path>secondPath</path>
<path>thirdPath</path>
...
</server>

现在结果应该是:

  • 哪个服务器
  • 得到了哪些路径

上面的伪代码示例:

GrpNo。 |值

1 | THISSERVER

2 | firstPath

3 | secondPath

4 | thirdPath

这种模式让我最后出现了:

<server name="(.*?)".\b[^>]*>.*<path>(.*?)</path>.*</server>

我使用

获取所有路径
<server name="(.*?)".\b[^>]*>.*<path>(.*?)</path>.*<path>(.*?)</path>.*<path>(.*?)</path>.*</server>

但这不应该是它的工作方式,因为我不知道可能有多少路径......

我对这个RegEx Stuff很陌生,我无法使用搜索找到任何类似的问题。

我希望有人可以帮助我:)

1 个答案:

答案 0 :(得分:0)

<server[^"]+"([^"]+)|<path>([^<]+)

试试这个。看看演示。

http://regex101.com/r/oE6jJ1/49

import re
p = re.compile(ur'<server[^"]+"([^"]+)|<path>([^<]+)', re.IGNORECASE | re.MULTILINE)
test_str = u"<server name=\"thisServer\" dns=\"...\".....>\n...\n<path>firstPath</path>\n<path>secondPath</path>\n<path>thirdPath</path>\n...\n</server>"

re.findall(p, test_str)