我有一組html文件,我想通過替換頁眉和頁腳進行修改。每個文件的內容是不同的,我想使用一個正則表達式(或類似如果RE不能處理多行查詢)。如何使用標準頁眉和頁腳修改/更新一組html文件
作爲一個例子,一個修改我要提出的是,<HTML>並與一個標準的頭< /頭>之間更換的一切。
這可以用正則表達式來完成嗎?您將使用什麼方法執行批量搜索並在C#中像這樣替換?
你能提供一個匹配多行的正則表達式的例子嗎?
我有一組html文件,我想通過替換頁眉和頁腳進行修改。每個文件的內容是不同的,我想使用一個正則表達式(或類似如果RE不能處理多行查詢)。如何使用標準頁眉和頁腳修改/更新一組html文件
作爲一個例子,一個修改我要提出的是,<HTML>並與一個標準的頭< /頭>之間更換的一切。
這可以用正則表達式來完成嗎?您將使用什麼方法執行批量搜索並在C#中像這樣替換?
你能提供一個匹配多行的正則表達式的例子嗎?
那麼簡單的答案是,是的。
正則表達式確實可以幫助你,但你需要一個能夠處理多個文件的工具。目前我無法推薦任何內容,請嘗試使用谷歌搜索「多個文件搜索和替換」。正則表達式可以處理多行或單行匹配。
我用記事本+ +,可以你想要做一個搜索/多個文件(打開或目錄樹中)更換什麼樣的事,不是它的主要目的,但它的作品。
困難的部分是定義你的「匹配」確保要挑選出您需要保留您有您可以在「替換」表達式中使用適當的捕獲組的詳細信息。
所以,再次,是的,它可以幫助,但你的問題是非常高的水平。
對於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。替換部分很簡單,將一個捕獲組放入並在替換字符串中引用組/名稱!
我打算編寫一些C#代碼來循環瀏覽html文件的集合,所以不會爲此使用文本編輯器。你有沒有一個例子說明你如何執行一個可以匹配多行的RE? – NickGPS 2009-11-06 11:39:26
感謝您的幫助。我編輯了這個問題,因爲我沒有編碼<和>,所以他們被剝離出來,這使得問題有點模糊。 我知道如何編寫一個循環,我在尋找的是一個可以匹配多行的正則表達式的例子嗎? – NickGPS 2009-11-06 11:45:19
傳入RegexOptions.Multiline或RegexOptions.Singleline以更改^和$的行爲。 Multiline =「更改^和$的含義,以便它們分別匹配任何行的開頭和結尾,而不僅僅是整個字符串的開頭和結尾。」 – 2009-11-06 13:53:10