2013-07-22 92 views
0

任何人都可以請幫助我的正則表達式模式,將匹配和檢查以下情況?我試圖匹配與返回字符分隔的文本。每行只能有3位數字(\ d {3}),最多100行。匹配3位數字的多行正則表達式模式

這是確定的:

123 
456 
789 

這是不正常:

123 
123789 
456 

這是不正常(注意中間和結束的空行):

123 

456 

我會很感激任何建議和幫助。謝謝。

回答

3

那麼整個文件必須看起來像這樣?然後嘗試

new Regex(@"\A(?:\d{3}\r?\n)*\z") 

說明:

\A  # Start of string 
(?: # Match the following (non-capturing) group: 
\d{3} # - three digits 
\r?\n # - one CRLF or LF (linebreak) 
)*  # any number of times (0 or more) 
\z  # until the very end of the string 

如果該文件可能不會在換行(而不是從你的描述確認)結束時,可以使用

new Regex(@"\A(?:\d{3}\r?$\n?)*\z", RegexOptions.Multiline) 

這最初使換行符可選(\r?\n?),但通過將行結尾確保在每三個字符位後結束一行$之間的CR和LF,這是(奇怪).NET認爲它應該匹配。

+0

非常感謝您的快速回復。這非常好! – Niner

1

做到這一點的一種方法就是根據您的初始正則表達式(\ d {3})檢查每一行。 另一種方式是\ r \ n添加到您的正則表達式,並允許重複

"(\d{3}\r?\n)*" 

,以過濾掉的情況下3,您只需要添加開頭和結尾,以顯示你想要匹配整個文件; (^指定開始,$指定結束)

"^(\d{3}\r?\n)*$"