Eclipse 软件具有搜索正则表达式的功能。我想搜索<version>0.0.1-SNAPSHOT</version>
其 xml 父节点不是的所有字符串<parent>
。
最简单的方法是什么?
编辑:完全重写。
只要<parent>
标签不能嵌套,这是可能的,但只有这样(并且所有关于不尝试将 XML 与正则表达式匹配的常见警告都适用。一旦您的 XML 中有评论或 CDATA 部分,所有的赌注都没有了)。
(?s)<version>0\.0\.1-SNAPSHOT</version>(?!(?:(?!</?parent>).)*</parent>)
解释:
(?s) # Turn on singleline matching mode
<version>0\.0\.1-SNAPSHOT</version> # Match this string
(?! # but only do this if it's impossible to match this regex here:
(?: # Try to match...
(?!</?parent) # (as long as there is no <parent> or </parent> tag ahead)
. # any character
)* # any number of times
</parent> # Then match </parent>
) # End of lookahead