2016-06-03 16 views
1

Ich arbeite an einem regulären Ausdruck, der eine bestimmte Anweisung entspricht und die nächste Zeile zurückgibt.C# reguläre Ausdrücke, die die nächste Zeile zurückgibt

zum Beispiel, aus den folgenden Zeilen, möchte ich das "Token" und erhalten Sie die "content1" & "content2".

some statement 
token 
content1 
some other statement 
some othe statement 2 
token 
content2 
continutes 
..... 

Ich habe diese Aussage versucht, aber ich denke, dass es grundlegend falsch ist.

var r = new Regex("token.*(\r\n){2}", RegexOptions.Singleline); 

Irgendeine Idee?

+2

Bitte lesen [fragen] und teilen Sie, was Sie versucht haben. – CodeCaster

+0

Sie sollten Ihre Frage mit zusätzlichen Regeln ergänzen, die erklären, wie viele Leerzeichen zwischen der wiederholten Zeichenfolge und der 'Zeilennummer' erwartet werden, z. 0-x Leerzeichen –

+1

@Robin Es ist nicht deterministisch. Der einzige Gedanke, an den ich denken kann, ist, das Ende der nächsten Zeile zu entdecken, indem man \ n oder \ r \ n hat. – Mori

Antwort

3

Sie können es mit dem regex tun

(?<=\ntoken\n).* 

Es nutzt positiven Blick hinter eine Linie von nur token dann alles in der nächsten Zeile übereinstimmt, bestehend zu finden.

See this example at ideone.

+0

Sollten Sie wirklich prüfen, ob 'token' ein neues Zeilenzeichen vorausgeht? Ich meine, was ist, wenn es am Anfang der Saite ist? –