论坛成员,
我正在使用最新的NotePad ++。我有430个单独的XML文件,我的目标是创建一个&#34; dmcode&#34;所有430个XML文件的列表。 dmcode标识每个XML文件,看起来像下面显示的示例代码。我需要帮助开发一个正则表达式,它将获取位于<dmCode
开始标记和结束/>
终止符之间的dmcode标记内容。此外,我只需要将此提取仅应用于<dmIdent>
标记后面的dmcode标记。换句话说,任何前面没有<dmIdent>
标记的dmcode标记都不会出现在我的NotePad ++搜索结果列表中。这样的正则表达式是否可以从许多XML文件中提取目标数据?
<dmIdent>
<dmCode assyCode="00" disassyCode="00" disassyCodeVariant="00" infoCode="042" infoCodeVariant="A" itemLocationCode="O" modelIdentCode="SASA" subSubSystemCode="6" subSystemCode="0" systemCode="A03" systemDiffCode="XY"/>
作为替代方案,我一直在研究使用XPath表达式来完成相同的任务。但是,我似乎无法找到一个NotePad ++ XPath插件,它允许我通过使用XPath表达式而不是正则表达式来指定我想从430 XML文件中提取的数据。如果有人能提供一个XPath表达式的例子,我将也会感激它,它将执行我试图通过使用正则表达式完成的相同任务。
任何帮助将不胜感激。
答案 0 :(得分:0)
我知道XPath有插件,但我不知道允许你搜索多个文件的插件。以下XPath将<dmCode>
中的所有属性与根元素<dmIdent>
的子项匹配:
/dmIdent/dmCode[@*]
我需要帮助开发一个正则表达式,它将获取位于
<dmCode
开始标记和结束/>
终结符之间的dmcode标记内容。此外,我只需将此提取仅应用于dmCode
标记后面的<dmIdent>
标记。
这适用于最简单的情况,其中:
<dmCode>
是<dmIdent>
(?i)<dmIdent>\s*<dmCode \K[^"/>]*(?>(?:"[^\\"]*(?:\\.[^\\"]*)*"|/(?!>))[^"/>]*)*(?=/>)
匹配
(?i)<dmIdent>\s*<dmCode
两个标签都用空格(不区分大小写)\K
重置匹配的文字[^"/>]*
除"
,/
或>
"[^\\"]*(?:\\.[^\\"]*)*"
文字或/(?!>)
/
后面没有>
[^"/>]*
(?=/>)
所有后跟/>