2009-11-06 55 views
0

我有一組html文件,我想通過替換頁眉和頁腳進行修改。每個文件的內容是不同的,我想使用一個正則表達式(或類似如果RE不能處理多行查詢)。如何使用標準頁眉和頁腳修改/更新一組html文件

作爲一個例子,一個修改我要提出的是,<HTML>並與一個標準的頭< /頭>之間更換的一切。

這可以用正則表達式來完成嗎?您將使用什麼方法執行批量搜索並在C#中像這樣替換?

你能提供一個匹配多行的正則表達式的例子嗎?

回答

0

那麼簡單的答案是,是的。

正則表達式確實可以幫助你,但你需要一個能夠處理多個文件的工具。目前我無法推薦任何內容,請嘗試使用谷歌搜索「多個文件搜索和替換」。正則表達式可以處理多行或單行匹配。

我用記事本+ +,可以你想要做一個搜索/多個文件(打開或目錄樹中)更換什麼樣的事,不是它的主要目的,但它的作品。

困難的部分是定義你的「匹配」確保要挑選出您需要保留您有您可以在「替換」表達式中使用適當的捕獲組的詳細信息。

所以,再次,是的,它可以幫助,但你的問題是非常高的水平。

對於C#部分,一旦您定義了正則表達式就很簡單。

static void Main() 
{ 
    // Remove everything (by commenting out) everything between HTML 
    // and the end of the HEAD tag. 
    string matchRegex = "<html[^>]*>(.*?)</head>"; 
    string replaceExpression = "<html> <!-- \0 </head> -->"; 

    string pattern = "*.html"; 

    using (DirectoryInfo di = new DirectoryInfo(.)) 
    { 
      foreach (FileInfo fi in di.GetFiles(pattern)) 
      { 
       using (StreamReader sr = fi.OpenText()) 
       { 
        // Going from memory here, may need to use a TextReader... 
        string content = fi.ReadToEnd(); 

        // Treat as single-line so that the match can span 
        // several lines. 
        string newContent = Regex.Replace(content, 
                 matchRegex, 
                 replaceExpression, 
                 RegexOptions.Singleline); 

        // Write-out/overwirte your new file here.... 
       } 
      } 
    } 
} 

你會發現這個頁面是有用的,在裏面,有人試圖寫一個正則表達式匹配的意見,然後處理多行註釋等,這顯示了正則表達式的思維過程。 Finding Comments in source code。替換部分很簡單,將一個捕獲組放入並在替換字符串中引用組/名稱!

+0

我打算編寫一些C#代碼來循環瀏覽html文件的集合,所以不會爲此使用文本編輯器。你有沒有一個例子說明你如何執行一個可以匹配多行的RE? – NickGPS 2009-11-06 11:39:26

+0

感謝您的幫助。我編輯了這個問題,因爲我沒有編碼<和>,所以他們被剝離出來,這使得問題有點模糊。 我知道如何編寫一個循環,我在尋找的是一個可以匹配多行的正則表達式的例子嗎? – NickGPS 2009-11-06 11:45:19

+1

傳入RegexOptions.Multiline或RegexOptions.Singleline以更改^和$的行爲。 Multiline =「更改^和$的含義,以便它們分別匹配任何行的開頭和結尾,而不僅僅是整個字符串的開頭和結尾。」 – 2009-11-06 13:53:10