2017-05-08 131 views
0

我正在使用RegEx清理包含HTML的XML文件。正确匹配两个单词之间的正则表达式并获取所有匹配结果

某些文件包含多个style -elements,我想将它们全部和中间的内容删除。例如:

(Test here on regex101...)

<STYLE> 
    group 1 
</STYLE> 
    Random text here which shall not be removed. 
<STYLE> 
    group 2 
</STYLE> 
    Some more random text here which shall not be removed. 
<STYLE> 
    group 3 
</STYLE> 

我使用下面的正则表达式与/ s参数

(<STYLE>).*(<\/STYLE>) 

问题是,这个正则表达式匹配<style>#1)和最后</style>之间的一切(#3 )。

我想只匹配group,<style></style>元素。这如何实现?

+0

您已接受的解决办法,但一定要明白,只有将删除第一个样式和组,即。您不能使用它来设置第二个(使用当前格式) – grail

+0

@grail - 使用/ sg标志时,接受的解决方案实际上可以正确地执行工作。 – Sha

回答

3

你可以尝试使用?操作使得正则非贪婪:

(&lt;STYLE&gt;).*?(&lt;\/STYLE&gt;) 
       ^^^ use ? to tell the regex engine to stop at the first closing tag 

演示在这里:

Regex101

+0

太简单了!谢谢 :) – Sha