有没有办法在XML中的指定标签之间找到可变的固定长度字符,如下所示
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">
<eventTime>2014-11-11T06:35:22Z</eventTime>
<eventAttributes>
<EventAttribute>
<name>userId</name>
<value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
</EventAttribute>
</eventAttributes>
</Event>
<Event id="4909eb79-f807-42f5-8281-27485ee68956" name="login" eventType="login">
<eventTime>2014-11-11T06:35:21Z</eventTime>
<eventAttributes>
<EventAttribute>
<name>userId</name>
<value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
</EventAttribute>
</eventAttributes>
</Event>
我在下面尝试了[1]:http://www.regexr.com/但没有运气
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo"><eventTime>.{20}<\/eventTime><e...
我想验证XML中是否存在以下文本。由于2014-11-11T06:35:22Z
是一个可以添加正则表达式的变量
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">
<eventTime>2014-11-11T06:35:22Z</eventTime>
<eventAttributes>
<EventAttribute>
<name>userId</name>
<value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
</EventAttribute>
</eventAttributes>
</Event>
最后,我将此搜索文本传递给grep命令并尝试从文件夹中提取XML文件名,然后在groovy代码中使用records = new XmlParser().parseText(eventFile)
来验证元素。
答案 0 :(得分:1)
您的正则表达式不考虑<eventTime>
标记前面的换行符和空格。在\s*
之间添加><
即可获得它。即
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">\s*<eventTime>.{20}<\/eventTime>
并不是说这非常强大或者否定了其他人对使用正确的XML解析器的看法(这是最好的主意)。