我有一个XML文档,如果其中包含sometextv2
,我会尝试匹配完整标记。这是我正在使用的示例数据集:
<mm_reportitem>
<mm_file>file.cfm</mm_file>
<mm_displaystr><![CDATA[ <cfinvoke component="/sometextv2" ]]></mm_displaystr>
</mm_reportitem>
<mm_reportitem>
<mm_file>file.cfm</mm_file>
<mm_displaystr><![CDATA[ <cfinvoke component = "/sometext" ]]></mm_displaystr>
</mm_reportitem>
<mm_reportitem>
<mm_file>file.cfm</mm_file>
<mm_displaystr><![CDATA[ <cfinvoke component="sometextv2" ]]></mm_displaystr>
</mm_reportitem>
我正在处理以下几个来自不同来源的文章:
<mm_reportitem[^>]*>([\s\S]*?).*sometextv2.*([\s\S]*?)<\/mm_reportitem>
这与我想要的完整标签相匹配。但是,这似乎与sometext
和sometextv2
匹配。
我缺少什么,只有sometextv2
匹配?
答案 0 :(得分:0)
尝试:
<mm_reportitem>[\s\S]{10,200}sometextv2\"[\s\S]*?<\/mm_reportitem>
我只需添加{10,150}以避免在一个结果中出现多个mm_reportitem。我认为在这个奇怪的案例中,正则表达式太“贪婪”是个问题......
答案 1 :(得分:-1)
你的正则表达式对我来说太复杂了。
<tag.*sometextv2.*</tag>
适用于您发布的所有示例。这对你有用吗?