2017-03-04 38 views
1

我使用Sublime Text 2查找&替換操作。我正在尋找一個正則表達式,它僅替換h1類標記來引導麪包屑,但不會影響其內容。每個h1標籤都有不同的文本,因爲有超過700個文件,手動完成這項工作非常困難!Sublime Text正則表達式在多個html文件中查找/替換

例如,我想替換此:

<h1 class="xyz">SOME CONTENT</h1> 

要這樣:

<ol class="breadcrumb"> 
<li> 
<a href="#">anylink</a> 
</li> 
<li> 
<span>SOME CONTENT</span> 
</li> 
</ol> 

,「一些內容」將是我要保持文本。

有可能嗎?

我使用此代碼,找到標籤和內容:

<h1 class="xyz">[^<>]*</h1> 

但是,如果我替換此:

<ol class="breadcrumb"> 
<li> 
<a href="#">anylink</a> 
</li> 
<li> 
<span>[^<>]*</span> 
</li> 
</ol> 

它與替換文本(我想保留)表達[^ <>] *。

有什麼想法?

回答

3

下面是另一個例子(我不認爲這是必要的,在結尾的>):

<h1 class="xyz">([^<]*)</h1> 

捕獲組([^<]*)其說「任何不是<零到多次」

然後你應該使用捕捉組\1$1,(我不知道它是如何工作的崇高)

<ol class="breadcrumb"> 
    <li> 
     <a href="#">anylink</a> 
    </li> 
    <li> 
     <span>\1</span> <!-- or $1, the one sublime text uses --> 
    </li> 
</ol> 
+2

非常感謝。事實上,它像一個魅力和兩個(\ 1或$ 1)。乾杯,algui91。 –

+0

@matheojean不客氣;-) – elbaulp

3

你可以這樣實現它:

發現使用:

<h1 class="xyz">([^<>]*)</h1> 

替換爲:

<ol class="breadcrumb"> 
<li> 
<a href="#">anylink</a> 
</li> 
<li> 
<span>$1</span> 
</li> 
</ol> 
+0

謝謝你,暹羅。這三個答案是完美的。但當我首先看到並測試了algui91的建議後,我投了贊成票。不管怎樣,謝謝你。 –

3

在搜索領域,你需要捕獲您想要在括號中的文字組中使用文字:

<h1 class="xyz">([^<>]*)</h1> 

而在替換字段中,使用捕獲組$1這樣的:

<ol class="breadcrumb"> 
<li> 
<a href="#">anylink</a> 
</li> 
<li> 
<span>$1</span> 
</li> 
</ol> 

希望它能幫助。

+0

謝謝你,JazZ。這三個答案是完美的。但當我首先看到並測試了algui91的建議後,我投了贊成票。不管怎樣,謝謝你。 –