任何人都可以請幫助我的正則表達式模式,將匹配和檢查以下情況?我試圖匹配與返回字符分隔的文本。每行只能有3位數字(\ d {3}),最多100行。匹配3位數字的多行正則表達式模式
這是確定的:
123
456
789
這是不正常:
123
123789
456
這是不正常(注意中間和結束的空行):
123
456
我會很感激任何建議和幫助。謝謝。
任何人都可以請幫助我的正則表達式模式,將匹配和檢查以下情況?我試圖匹配與返回字符分隔的文本。每行只能有3位數字(\ d {3}),最多100行。匹配3位數字的多行正則表達式模式
這是確定的:
123
456
789
這是不正常:
123
123789
456
這是不正常(注意中間和結束的空行):
123
456
我會很感激任何建議和幫助。謝謝。
那麼整個文件必須看起來像這樣?然後嘗試
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認爲它應該匹配。
做到這一點的一種方法就是根據您的初始正則表達式(\ d {3})檢查每一行。 另一種方式是\ r \ n添加到您的正則表達式,並允許重複
"(\d{3}\r?\n)*"
,以過濾掉的情況下3,您只需要添加開頭和結尾,以顯示你想要匹配整個文件; (^指定開始,$指定結束)
"^(\d{3}\r?\n)*$"
非常感謝您的快速回復。這非常好! – Niner