2013-02-22 53 views
0

我需要做很多種各樣的搜索並在很多靜態html文件內進行替換。我想提出的一個問題是,當我真正想要搜索/替換時,我在網址中獲得匹配項是文本節點尋找一個HTML解析器在文本節點上進行搜索/替換

因此,使正則表達式變得更加困難,並且最有可能更容易出錯,因爲您現在正在用它們解析html。

什麼是最簡單方式來做搜索/只取代文本節點?我在說你可以在幾分鐘內完成並運行,而且在Python-Java-Ruby-Headless-Phantom-PHP-Node-FluxCapacitor中不需要Master。

請給出建議,就好像你在對一個白癡說話一樣。我在Windows 7

我在找的東西就像Notepad ++中的搜索/替換功能。你給它一個目錄來開始搜索,它遞歸地搜索,按照你指定的每種類型的文件(比如.html或.shtml),你告訴它要搜索什麼以及用什麼替換它。它運行,10或15秒後,您可能會一次編輯數百個文件。你知道,死了簡單的東西。

所以這就是我想要做的,但只是在文本節點內搜索/替換。

回答

0

SublimeText 2有一些非常強大的文本搜索功能,應該讓你能夠在你解釋的時候做到這一點,所以雖然我認爲我可以指引你在正確的方向 - 我自己仍然在學習如何使用它 - 但它確實有「在文件中查找」選項,這意味着您可以在許多不同的文件中抓取所選單詞並將其替換 - 但我沒有找到排除不需要更改的不相關內容的方法。希望別人會來,並啓發你。

您可能要在標籤中的「崇高文本2」添加到您的原職,以擴大觀衆

+0

如果您無法排除不相關的匹配,那麼這無助於您。記事本++有同樣的問題,這就是爲什麼我開始尋找正則表達式搜索/替換。另外,我不想爲此購買軟件。 – 2013-02-22 01:07:53

0

您可以在http://htql.net使用Python和HTQL。一些示例:

page="<html> <body> <table> <tr><td id='cell1'> test1 </td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>" 

import htql 
print(htql.query(page, "<td (id='cell1')>:tx &replace('XXXX') ")) 
#[("<html> <body> <table> <tr><td id='cell1'>XXXX</td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>",)] 

print(htql.query(page, "<td (id='cell1')>:id &replace('ZZZZ') ")) 
#[("<html> <body> <table> <tr><td id='ZZZZ'> test1 </td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>",)] 

print(htql.query(page, "<td (id like 'cell%')>:tx &replace('YYYY') ")) 
#[("<html> <body> <table> <tr><td id='cell1'>YYYY</td></tr> <tr> <td id='cell2'>YYYY</td> </tr> </table> </body> </html>",)]