如何使用正则表达式查找多行字符串中的所有xml实体

时间:2014-11-29 14:49:58

标签: regex xml parsing

我正在尝试解析xml实体文件以使用正则表达式获取所有实体。

这就是我所做的http://regex101.com/r/kU4lN8/1 编辑链接:http://regex101.com/r/tF4kY9/1

这将实体包含在以“>”结尾的任何其他属性中。

获取实体的任何帮助?

这是我想要的比赛结果

<!ENTITY % common  SYSTEM "../common.ent">

<!ENTITY commonFaults
           '
        <response xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:computeFault"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="503" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:serviceUnavailable"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="400" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:badRequest"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="401" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:unauthorized"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="403" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:forbidden"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="405" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:badMethod"/>
            <representation mediaType="application/json"/>
        </response>
        <response status="413" xmlns="http://wadl.dev.java.net/2009/02">
            <representation mediaType="application/xml" element="csapi:overLimit"/>
            <representation mediaType="application/json"/>
        </response>
           '>

..... .. ..

<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>

1 个答案:

答案 0 :(得分:0)

我认为你在寻找的是:

<!ENTITY\s+(\S+)\s+'([^']*)'\s*>

它使用字符类来划分您感兴趣的部分:

  • \S+表示实体名称​​(所有不是空格)
  • [^']+内容(所有不是简单的引用)

对于此模式,不需要修饰符s (javascript中不存在)

实体名称和内容存储在捕获组中。