承諾,我的正則表達式問題的最後一段時間。 ..真。正則表達式 - 它不應該與NewLine匹配嗎?
我不知道如何在某些匹配項中獲得換行符,並且我確信這是我誤解的內容,或者,我得到的數據不是我所期望的。 (這是可能的..!)
我已經定義了一個正則表達式: new Regex(@"^\s*[0-9]{4}[A-Z]{2}[\s\*]\s*(?<token>.*?)\-(?<value>.*?)$", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
我的文件/字符串我得到的是格式化像偶爾線:
0000AA Token1 - Value
0000AA Token2 - Value
0000AA Token3 - Value
0000AA Another Tok- Value
當我得到的所有像這樣的令牌,上面的正則表達式工作得很好。我得到四個匹配:
Match# <token> <value>
1 Token1 Value
2 Token2 Value
3 Token3 Value
4 Another Tok Value
這很好。然而,有時用戶會送我一個文件,其中的標記有偶爾的缺失行,如:
0000AA Token1 - Value
0000AA Token2 - Value
0000AA Token3 - Value
0000AA
0000AA Another Tok- Value
發生這種情況時,我正則表達式會給我以下值:
Match# <token> <value>
1 Token1 Value
2 Token2 Value
3 Token3 Value
4 0000AA Another Tok Value
我知道爲什麼,它匹配#4的標記從它上面的行開始。但是,當我將'token'分組更改爲(?<token>[^\n]*?)
時,我仍然在'token'中獲得相同的值。
我覺得我失去了一些明顯的東西,因爲如果。當它不應該是匹配換行符的時候,更多的人會比葡萄乾更糟糕。我檢查了傳入的字符串 - 換行符是\n
,而不是\r\n
,但想知道是否還有其他問題。
再次歡呼 - Mike。
哇,謝謝。我覺得自己很笨 - 我從來沒有意識到換行符被認爲是空白。 (釷,它確實有道理!)也很好的提示了雙重否定 - 我從來沒有這樣想過。 謝謝! – Coyttl 2013-02-15 21:10:51