2013-07-09 180 views
2

我正在嘗試使正則表達式匹配包含CRLF的字符串。這是爲了驗證CRLF是否存在於給定的字符串中。在C中包含CRLF的RegEx匹配字符串#

我使用:

Regex.IsMatch(allRead, "^the dog jumped\r\n$", RegexOptions.Singleline) 

但我沒有任何成功。

+0

嘗試'\\ r \\ n'而不是 – Tommi

+0

\\ r \\ n無效。 – Renegrin

+0

我建議你看看http://www.ultrapico.com/Expresso.htm(免費)這樣的工具,以便快速測試不同的模式,輸入並查看模式匹配原因的解釋。 – Grhm

回答

1

您正在使用singleLine選項,然後將換行符放入您的模式中。有什麼打擊你,也許有點關閉?

嘗試多行

您是否試圖獲取整個字符串中的最後一行?

編輯...

有了這個輸入

gd 
fg 
dfg 
the dog jumped 
the cat jumped 
the dog jumped 
the dog jumped 

隨着多,試試這個正則表達式...

^the dog jumped$ 

希望幫助...

+0

我在這裏有點困惑。我已經嘗試了Multiline和Singleline正則表達式選項。它們都不能正常工作。 – Renegrin

+0

我已經擴展了我的答案... –

+0

我使用SingleLine來匹配多行。根據http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx,單行選項使'.'匹配任何字符,包括換行符。所以'你好。*世界'*不會*匹配''你好\ n世界''(多行文本塊)*除非* SingleLine選項被指定!必須是有史以來最令人困惑的命名選項。 – Grhm

0

請按照以下方法操作。

Regex.IsMatch(allRead, "^the dog jumped\r\n$", RegexOptions.Multiline) 

這可能會幫助你。

2

嘗試之一:

Regex.IsMatch(allRead, "the dog jumped\\r\\n") 
Regex.IsMatch(allRead, @"the dog jumped\r\n") 

除非你希望allread只含有「然後跳上狗\ r \ n」個

即你不需要^ - 除非你想只匹配,如果「狗」在字符串的開始處(或者如果使用RegexOptions.Multiline,則爲行的開始)

您也可能不想要$,除非您要確保新行結束的字符串(或者如果您使用RegexOptions.Multiline,則下一行爲空)

+0

看起來不錯,+ 1 – ridoy

相關問題