我有以下xml
<person>
<id>1</id>
<name>John</name>
<phone>235 234</phone>
<address>
<street>1</street>
<city>A</city>
<state>B</state>
<country>C</country>
</address>
</person>
我将这个xml转换为字符串,这是一个动态的xml。有些xml有所有这些元素,有些没有指定元素,有些xml有附加元素。
基于xml字符串,我想编写正则表达式,以查找字符串中是否存在给定元素(作为输入)。
如何为此编写正则表达式?
答案 0 :(得分:1)
所有评论作者都是对的。有一种比使用正则表达式搜索更好的方法来查明XML元素是否包含指定的元素或其标记。
但如果您真的想通过正则表达式搜索来完成此任务,则可以使用您的示例:
<person>(?:(?!</person>)[\S\s])+<XXX\b(?:(?!</person>)[\S\s])+</person>
此表达式匹配从开始标记<person>
到结束标记</person>
的所有内容,如果它包含<XXX
,其中XXX
是要在元素人中找到的元素强>
注意:此正则表达式仅在元素人不包含另一个人元素并且没有包含</person>
或{{1的CDATA部分的情况下有效}或<person
。
表达式只是检查是否找到元素<XXX
的起始标记而没有检查结束标记,因为从问题中不清楚所有元素是否必须与起始标记和结束标记一起出现,或者有些可能也是XXX
形式的空元素。
有关此正则表达式的解释,请阅读Deleting duplicate values using find and replace in a text editor上的答案。