2017-02-28 3 views
2

Ich versuche, einen Ausdruck in WebHarvy (.NET) zu verwenden, in einem Absatz die 2. Zeile passen, mit einem doppelten Zeilenumbruch zwischen ihnenRegex zu zweiter Zeile paßt

Beispiel

Dies ist die erste Zeile

Dies ist die zweite Linie

ich versucht habe, mit \n(.*)\n\n aber es gibt einen leeren Zeilenumbruch statt dem s zweite Zeile.

Bitte überprüfen https://regex101.com/r/9GjHTM/1

beraten Mit freundlicher

Dank

+1

Es ist [die] (https://www.webharvy.com/articles/regex.html) Sie können * erfassen * was Sie brauchen, also scheint '\ n (. +)' gültig, es sei denn, Sie haben nur CR-Enden. Sie können versuchen, '(?: \ R \ n? | \ N) (. +)'. Oder '^. * (?: \ R \ n? | \ N) (. +)'. Wenn Sie das Ergebnis in einem Übereinstimmungswert abrufen möchten, verwenden Sie ein Lookbehind (aber nur, wenn WebHarvey wirklich auf .NET-Regex ausgeführt wird): '(? <= ^. * (?: \ R \ n? | \ N)). + ' –

+0

Danke Wiktor. Versuchte alle von ihnen, aber es gibt eine leere Zeile anstelle der zweiten Zeile mit Text –

+2

Ok, vielleicht hilft ein begrenzender Quantifizierer (ein '.' in .NET regex entspricht CR, so dass das ein Problem sein könnte):' (? : \ r \ n? | \ n) {2} (. +) 'oder' ^. * (?: \ r \ n? | \ n) {2} (. +) ' –

Antwort

2

In WebHarvey regex, können Sie erfassen, was Sie brauchen:

WebHarvy nur diejenigen Teil extrahieren (n) des Haupttextes, der die in der RegEx String angegeben group(s) entspricht.

So verwenden

(?:\r\n?|\n){2}(.+) 

Der Ausdruck entspricht:

  • (?:\r\n?|\n){2} - genau zwei Vorkommen ({2}) von
    • \r\n? - ein CR (Carriage Return), gefolgt von 1 oder 0 (= optional) LF (Zeilenumbrüche)
    • | - oder
    • \n - ein LF (a Neue-Zeile)
  • (.+) - einfangende Gruppe 1 (die Teilzeichen mit diesem Submuster abgestimmt ausgegeben wird durch WebHarvey)
+0

Hinweis: Sie können '(?: \ R \ n? | \ N)' so anpassen, dass nur der erforderliche Zeilenumbruchsstil berücksichtigt wird. Wenn sie "\ r \ n" sind, verwenden Sie '(?: \ R \ n) {2}', wenn Sie nur \ n '' n {2} 'verwenden. –

2

Versuchen Sie, die folgenden regex:

\n.*?(?:\n\s(?=\w+\S)) 

siehe demo/explanation

+0

Das funktioniert perfekt. Vielen Dank –

+0

Hallo Siam - Ich hatte Ihren Ausdruck auf Regex101 versucht und es schien gut zu funktionieren, aber wenn ich es auf Webharvy versuche, gibt es eine leere Zeile. Der Ausdruck "(?: \ R \ n? | \ N) {2} (. +)' Wie von Wiktor angegeben ist genau das Gegenteil, funktioniert nicht auf regex101, funktioniert aber auf WebHarvy. Vielen Dank für Ihre Hilfe. Sehr geschätzt :) –