2017-03-14 77 views
0

我需要一個正則表達式來匹配所有在第二行。C#RegEx匹配所有在第二行

First Line 
Second Line 

我試過使用\ n(。*)\ n但它返回空值。

Match match in Regex.Matches(line, @"\n(.*)\n", RegexOptions.Multiline) 
+0

使用'變種匹配= Regex.Match(線,@ 「\ n(*)。」)組[1] .Value' –

回答

0

隨着在RegexOptions.MultiLine啓用後,您可以使用以下命令:

\n^(.*)$ 

Multiline啓用,^$將匹配的開始和結束一行而不是字符串的開始和結束。

實施例:Regex101

0

您試圖匹配兩個行尾,而您的輸入只有一個。

更改爲\n(.*)

+0

或者,更好的:(。*)\ n (\ n)的? - 如果有第三條線,這也匹配。 – Compufreak

2

你不需要爲正則表達式。剛上線拆分輸入字符串,並得到你需要行:

var line= @"First Line 
Second Line"; 

var secondLine = line.Split('\n')[1]; // "Second Line" 

您還可以得到所需的行通過索引,以避免IndexOutOfRange例外前檢查線路的數量在您的字符串。

即使正則表達式,最好使用Split方法,如果你要通過一些價值分裂輸入(但同樣,如果你是單純的開裂線沒有一些模式是矯枉過正):

var secondLine = Regex.Split(line, Environment.NewLine)[1]; 
+1

在非常長的字符串中使用此操作可能會產生很大的開銷 - 如果您希望字符串非常長,則可以使用.IndexOf()和.Substring()的組合更好地查找\ n的前兩個索引,並創建一個子字符串在這些之間2. – Compufreak

+0

@Compufreak同意,但很長的字符串通常來自文件。在這種情況下,我會簡單地使用'File.ReadLines(fileName).Skip(n).FirstOrDefault()' –