正则表达式在xml中查找包含其值包含两个句点的属性的元素

时间:2015-02-16 23:23:07

标签: regex xml

我正在搜索某些xml,我的工具是正则表达式。 (在这种情况下,我唯一的工具是编辑器,因此我使用eclipse或记事本++)。我需要找到包含属性的所有元素,这些属性的值包含两个不相邻的句点。 所以它会在{:1}}和attr1中找到:

attr3

我已尝试过这个以及notepad ++中的变体

<myelement attr1 = "ab.cd.ef", attr2="ab", attr3="zy.sa.xa"/>

但它不会使用包含两个句点的值来获取第二个属性。

我会继续尝试,但如果有人能指出我的答案,我会很感激。

2 个答案:

答案 0 :(得分:0)

我认为你不能用正则表达式做到这一点。

除非你创造一个怪物正则表达式,否则将会产生一个吞噬地球所有生命的黑洞(礼貌地说当然)。

请记住,你在正则表达式中没有逻辑,只是使用模式匹配,例如,数字只是一个数字,你不能用简单的方式说if I get 1 then get 3 also

您可以在正则表达式中使用 if else else ,如:

(?(?=condition)(then1|then2|then3)|(else1|else2|else3))

但是你要做的是在每种情况下具有多个条件的条件时进行嵌套,例如if 1 then 3 | if 2 then 4 | if 3 then 5创建一个嵌套的巨大模式。

另一种正则表达式方法是拥有多个正则表达式的外观(在这种情况下向前看),你的正则表达式无法读取。

我认为您可能会发现更有用的 Xpath Xquery 表达式。这是匹配xml比正则表达式更好的方法。

答案 1 :(得分:0)

  

我正在搜索某些xml,我的工具是正则表达式。

这有点像说你砍伐树木而你的工具是螺丝刀。获得适合该工作的工具:XML解析器和XPath引擎。