我正在嘗試使正則表達式匹配包含CRLF的字符串。這是爲了驗證CRLF是否存在於給定的字符串中。在C中包含CRLF的RegEx匹配字符串#
我使用:
Regex.IsMatch(allRead, "^the dog jumped\r\n$", RegexOptions.Singleline)
但我沒有任何成功。
我正在嘗試使正則表達式匹配包含CRLF的字符串。這是爲了驗證CRLF是否存在於給定的字符串中。在C中包含CRLF的RegEx匹配字符串#
我使用:
Regex.IsMatch(allRead, "^the dog jumped\r\n$", RegexOptions.Singleline)
但我沒有任何成功。
您正在使用singleLine選項,然後將換行符放入您的模式中。有什麼打擊你,也許有點關閉?
嘗試多行。
您是否試圖獲取整個字符串中的最後一行?
編輯...
有了這個輸入:
gd
fg
dfg
the dog jumped
the cat jumped
the dog jumped
the dog jumped
隨着多,試試這個正則表達式...
^the dog jumped$
希望幫助...
我在這裏有點困惑。我已經嘗試了Multiline和Singleline正則表達式選項。它們都不能正常工作。 – Renegrin
我已經擴展了我的答案... –
我使用SingleLine來匹配多行。根據http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx,單行選項使'.'匹配任何字符,包括換行符。所以'你好。*世界'*不會*匹配''你好\ n世界''(多行文本塊)*除非* SingleLine選項被指定!必須是有史以來最令人困惑的命名選項。 – Grhm
請按照以下方法操作。
Regex.IsMatch(allRead, "^the dog jumped\r\n$", RegexOptions.Multiline)
這可能會幫助你。
嘗試之一:
Regex.IsMatch(allRead, "the dog jumped\\r\\n")
Regex.IsMatch(allRead, @"the dog jumped\r\n")
除非你希望allread
只含有「然後跳上狗\ r \ n」個
即你不需要^
- 除非你想只匹配,如果「狗」在字符串的開始處(或者如果使用RegexOptions.Multiline
,則爲行的開始)
您也可能不想要$
,除非您要確保新行結束的字符串(或者如果您使用RegexOptions.Multiline
,則下一行爲空)
看起來不錯,+ 1 – ridoy
嘗試'\\ r \\ n'而不是 – Tommi
\\ r \\ n無效。 – Renegrin
我建議你看看http://www.ultrapico.com/Expresso.htm(免費)這樣的工具,以便快速測試不同的模式,輸入並查看模式匹配原因的解釋。 – Grhm