我正在搜索某些xml
,我的工具是正则表达式。 (在这种情况下,我唯一的工具是编辑器,因此我使用eclipse或记事本++)。我需要找到包含属性的所有元素,这些属性的值包含两个不相邻的句点。
所以它会在{:1}}和attr1
中找到:
attr3
我已尝试过这个以及notepad ++中的变体
<myelement attr1 = "ab.cd.ef", attr2="ab", attr3="zy.sa.xa"/>
但它不会使用包含两个句点的值来获取第二个属性。
我会继续尝试,但如果有人能指出我的答案,我会很感激。
答案 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引擎。