2011-07-19 66 views
2

我需要使用正則表達式只提取多行字符串中的最後一行。我正在嘗試使用以下@「\ n(。*?)$」的SingleLine模式,但不幸的是,它提取了以第二行開始的文本以結束。任何提示?使用正則表達式提取文本的最後一行

謝謝!

+1

你能和'String'的'.Split(..)'方法做到這一點? – Tocco

+0

我寧願使用正則表達式。我想過,如果沒有可行的解決方案出現 - 可能我會最終使用它。 – dcg

+0

「我寧願使用更復雜,更耗費資源的解決方案」。 – Oded

回答

4

什麼像

@"([^\n\r]*)$" 

這意味着匹配的一切,是不是換行字符,直到字符串的結尾。

好吧,當我仔細想想,當你不使用DOTALL修飾符那麼這應該是罰款

@"(.*)$" 

沒有這個修飾符.不匹配換行符。所以在開始時不需要\n

+0

是的,這個工程!謝謝! – dcg

1

嘗試沒有一個正則表達式

string literal = @"I 
am 
the 
best"; //With \n 

string[] lines = literal.Split(new string[] { "\n" }, StringSplitOptions.None); 
string lastLine = lines[lines.Length - 1]; 
Console.WriteLine(lastLine); //Should print "best" 

用正則表達式:

Match m = Regex.Match(literal, @"\n*.+$"); 
Console.WriteLine(m.Value); //Should be @"\nbest" 
+0

雖然在複雜性方面分割字符串是更好的解決方案,但這並不能回答OP所問的問題。 –

+0

編輯回答@喬治說的問題。 – Tocco

+0

是的,第二個版本工作。我不得不選擇其他答案,因爲它首先回應。謝謝! – dcg