Da die OP sagt Sahil Antwort "wie ein Charme" I Ich nehme an, dass der Text in Notepad ++ mit einem Zeilenumbruch endet er. Sonst werden Sahils und Totos Antworten nicht mit den letzten Worten übereinstimmen.
Sahil Muster: (.*?)\n(.*?)\n(.*)\n
nimmt 79 Schritte *, wenn der Text in \n
endet; sonst 112 Schritte und schlägt fehl.
Sein Ersatz Ausdruck verwendet unnötigerweise zwei Capture Group Referenzen.
Totos Muster: ((?:[^\r\n]+\R){2})[^\r\n]+\R
dauert 39 Schritte * wenn der Text in \n
endet; sonst 173 Schritte und schlägt fehl. Sein Ersatzausdruck verwendet eine Fanggruppenreferenz.
Mein vorgeschlagenes Muster dauert nur 25 Schritte und verwendet keine Erfassungsgruppen. Ihr Text ist eine Reihe von nicht-weiß mit weißen Zeichen gefolgt Zeichen und so ist die folgende die kürzeste und präziseste Muster, die maximale Geschwindigkeit bestimmt: sollte
\S+\s+\S+\s+\K\S+\s*
Dieses Muster mit einem leeren gepaart werden Ersatz.
\S
bedeutet "non-white-space character"
\s
"white-space character" bedeutet
+
bedeutet ein oder mehreren der vorhergehenden Spiel
*
bedeutet Null oder mehreren der vorhergehenden Spiel
\K
Mittel Keep the match ab hier
Die *
auf die endgültige \s
ermöglicht die abschließenden 3 Zeilen Text ohne ein abschließendes Newline-Zeichen abzuschließen. Wenn Sie diese Art von Operation für einen großen Textblock ausführen, müssen Sie sicherstellen, dass die Ersetzung für den gesamten Text ordnungsgemäß funktioniert und keine unerwünschten Teilstrings vorhanden sind.
Obwohl ich sicher bin, dass Sie diese Regex-Aufgabe schon lange vergessen haben, ist es wichtig, dass zukünftige Leser davon profitieren, den besten Weg zu lernen, um das gewünschte Ergebnis zu erzielen.
Teilen Sie Ihre Forschung hilft jedem. Sagen Sie uns, was Sie ausprobiert haben und warum es nicht Ihren Bedürfnissen entspricht. Dies zeigt, dass Sie sich die Zeit genommen haben, sich selbst zu helfen, es rettet uns davor, offensichtliche Antworten zu wiederholen, und vor allem hilft es Ihnen, eine spezifischere und relevantere Antwort zu bekommen! Siehe auch: [ask] –
Arbeitete für mich. Ich benutze gedit auf ubuntu. Ich suchte mit '(. *?) \ N (. *?) \ N (. *) \ N' und ersetzte es mit' \ 1 \ n \ 2 \ n' –