我想在下面的文本搜索下面的正則表達式德爾福正則表達式,以匹配文本忽略換行
^[ ]*,$
:
,[LF]
,[LF]
我的問題是,德爾福發現表達式,但匹配的文本不包含LF。 有效我想去除我的源代碼行。
我'使用TPerlRegEx與delphiXe8
- 在該示例[LF]是換行($ 0D 0A $)
- 我在TPerlRegExOptions
- 這完全在SublimeText 3測試了幾種標誌combinaisons
我錯過了什麼?
我想在下面的文本搜索下面的正則表達式德爾福正則表達式,以匹配文本忽略換行
^[ ]*,$
:
,[LF]
,[LF]
我的問題是,德爾福發現表達式,但匹配的文本不包含LF。 有效我想去除我的源代碼行。
我'使用TPerlRegEx與delphiXe8
我錯過了什麼?
如果您使用的是正則表達式PCRE,你可以在一行的stsart匹配零個或多個空格,接着用逗號緊隨其後,行序列與
(?m)^[ ]*,\R
見regex demo。請注意,(?m)
是一個多行修飾符,使^
匹配行首(\n
之後)的位置。 \R
匹配任何換行符序列。
在\R
之後加上一個?
,以匹配文本末尾沒有換行符序列的最後一行。
沒有必要加倍,'\ R'完全沒問題 –
剛剛測試過它:'Assert(TRegex.Replace ','+ sLineBreak +','+ sLineBreak,'(?m)^ [] *,\\ R)','').IsEmpty);'運行並且完美運行,使用雙反斜線會引發ERegularExpression錯誤。 –
@SebastianProske:我已經檢查了,太強了,似乎注意到我的是不相關的。我刪除它。感謝您的測試。 –
你確定它在SublimeText3?我想你應該使用'^ \ s *,\ [。* \] \ s * $'代替。 –
@Henry,如果你使用的是PCRE正則表達式,你需要'(?m)^ [] *,\ R'(在'\ R'後面加一個'?'來匹配文本的最後一行)。而必須使用兩個反斜線('\\ R'),因爲字符串文字是在Delphi C字符串。 –
您不應直接使用System.RegularExpressionsCore中的TPerlRegEx,而應查看System.RegularExpressions中的TRegex –