我的日志文件是这样的,
2015-04-10 19:10:39,688 INFO [abc] Reqt [283183]: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Data>..<Name>EVENT_1</Name>..</Data>
2015-04-10 19:10:39,688 INFO [abc] Req [283184]: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Data>..<Name>MY_EVENT</Name>..</Data>
正则表达式我写的是,
pFile = File.read("C:/logs/pdata.log")
Regex = /<Data>(.*?)MY_EVENT(.*?)<\/Data>/m
pData = pFile.match(Regex).to_s
&#34; MY_EVENT&#34;可能会出现在第一个xml标记或第二个xml标记中,甚至可能最终基于该方案。 如果它出现在第一个标签中,正则表达式工作正常,如果它出现在第二个标签中,它匹配第一个标签,我的输出就像,
<Data>..<Name>EVENT_1</Name>..</Data>
2015-04-10 19:10:39,688 INFO [abc] Req [283184]: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Data>..<Name>MY_EVENT</Name>..</Data>
我只需要提取一个包含MY_EVENT的xml标签。 请帮我解决这个问题!提前致谢
答案 0 :(得分:0)
试试这个。
pData.match(/<Data>((?!<Data>).)*?MY_EVENT((?!<Data>).)*?<\/Data>/m)
我假设所有<Data>
元素都不会包含另一个<Data>
作为其子元素。