2017-01-17 5 views
0

Ich möchte eine Zeile Inhalt zwischen "From:" erhalten, bis "\ r \ n", heve ich das versucht:Regex zu erhalten Linie Inhalt

string texto = @"From: .... blabla bla 
    Message: blablabalab 

    //linha em branco 
    From: .... blabla bla 
    Message: blablabalab 

    //linha em Branco 
    From: .... blabla bla 
    Message: blablabalab"; 

    string[] lines = Regex.Split(texto, "From:\\s+\\rn"); 

dank

Antwort

2

Das Muster du bist Suche nach ist @"From:(.*?)\r\n". Außerdem sollten Sie Regex.Match eher verwenden als Regex.Split:

string from = Regex.Match(s, @"From:(.*?)\r\n").Value; 

Sie auch Regex.Matches verwenden können, wenn Sie alle "von" s erhalten möchten:

string[] froms = Regex.Matches(s, @"From:(.*?)\r\n") 
         .Cast<Match>() 
         .Select(m => m.Value) 
         .ToArray(); 
+0

tut es erlauben Rohr zu benutzen? – user3739007

+0

Ich versuchte String texto = @ "| 0140 | XX | \t \t \t \t \t | 0150 | TEST | TEST | \t \t \t \t \t | 0150 | TEST | TEST |"; string [] pedacos = Regex.Matches (texto, @ "| 0150 |.? (*) \ R \ n") .Cast () .Select (m => MESSW) .ToArray() ; – user3739007

+0

@ user3739007 Das Pipe-Zeichen hat in Regex eine besondere Bedeutung. Wenn Sie es verwenden möchten, um nach dem Charakter zu suchen, müssen Sie ihm entkommen. (z.B. '" \ | "') – Abion47

0

sollten Sie "From:(.*)$" $ verwenden ist ein Standardzeichen für die in der C# Regex-Engine endende Zeile.

Sie können mehr über Regex in C# lesen here

Verwandte Themen