2017-05-08 48 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

相關問題