2016-02-21 77 views
2

我想在下面的文本搜索下面的正則表達式德爾福正則表達式,以匹配文本忽略換行

^[ ]*,$ 

,[LF] 
    ,[LF] 
  • 我的問題是,德爾福發現表達式,但匹配的文本不包含LF。 有效我想去除我的源代碼行。

  • 我'使用TPerlRegEx與delphiXe8

  • 在該示例[LF]是換行($ 0D 0A $)
  • 我在TPerlRegExOptions
  • 這完全在SublimeText 3測試了幾種標誌combinaisons

我錯過了什麼?

+0

你確定它在SublimeText3?我想你應該使用'^ \ s *,\ [。* \] \ s * $'代替。 –

+0

@Henry,如果你使用的是PCRE正則表達式,你需要'(?m)^ [] *,\ R'(在'\ R'後面加一個'?'來匹配文本的最後一行)。而必須使用兩個反斜線('\\ R'),因爲字符串文字是在Delphi C字符串。 –

+0

您不應直接使用System.RegularExpressionsCore中的TPerlRegEx,而應查看System.RegularExpressions中的TRegex –

回答

2

如果您使用的是正則表達式PCRE,你可以在一行的stsart匹配零個或多個空格,接着用逗號緊隨其後,行序列與

(?m)^[ ]*,\R 

regex demo。請注意,(?m)是一個多行修飾符,使^匹配行首(\n之後)的位置。 \R匹配任何換行符序列。

\R之後加上一個?,以匹配文本末尾沒有換行符序列的最後一行。

+0

沒有必要加倍,'\ R'完全沒問題 –

+1

剛剛測試過它:'Assert(TRegex.Replace ','+ sLineBreak +','+ sLineBreak,'(?m)^ [] *,\\ R)','').IsEmpty);'運行並且完美運行,使用雙反斜線會引發ERegularExpression錯誤。 –

+0

@SebastianProske:我已經檢查了,太​​強了,似乎注意到我的是不相關的。我刪除它。感謝您的測試。 –