2013-02-14 93 views
2

我希望這是非常簡單的...我試圖從一個正文表達式塊刪除頁腳,這包括兩個初始換行符,這是我的問題所在。正則表達式刪除頁腳文本的換行符

Message body blah blah balh 
    {Line Break} 
    {Line Break} 
    ---------------------------------- 
    Custom footer text 

我一直在試驗/\?(\r\n)(\r\n)([-{34}])/.*的變化,但沒有任何工作。

+2

'[ - {34}]'應該只是' - {34}'。 '[ - {34}]'表示「 - 」或「{」或「3」或「4」或「}」。最後是什麼?\?和'。*'? – abc667 2013-02-14 12:28:20

+0

謝謝 - 這些都是一些非常好的指針。 *試圖讓所有的東西都得到! – bigtv 2013-02-14 12:44:49

回答

3

我做了一個測試,這個工程:

[\r\n]*-{34}[\w\s\n\r]* 

下面的代碼:

var input = @"Message body blah blah balh 


---------------------------------- 
Custom footer text"; 

var pattern = @"[\r\n]*-{34}[\w\s\n\r]*"; 
var clean = Regex.Replace(input, pattern, "", RegexOptions.Multiline); 

Console.WriteLine(clean); 

輸出的預期之一:

Message body blah blah balh 

有幾個初始方法存在問題。其中一些人在上面的評論中被abc667指出。

這裏有兩個人:

  • 當你做(\r\n),您所期待的確切字符序列CR,LF。但是,在某些操作系統中,換行符只能由\n(LF)表示。爲了使模式適用於這兩種情況,您可以使用字符類,如下所示:[\r\n]*。這意味着:「所有\n和/或\r字符的序列可以按照任意順序」「找到。

  • 點(.)匹配除\ n之外的任何單個字符(請參見docs)。在一些正則表達式中,它也可以在特殊條件下匹配換行符(請參閱「(點)」here),但不能在.NET中使用。這就是爲什麼我用.*替代[\w\s\r\n]*之後的所有符合所有單詞字符,空格字符,CR和LF的匹配。