2016-05-18 9 views
-1

Ich habe einige Dateien und muss identische Zeilen beginnend mit "abc" und genau eine Zeile zwischen diesen beiden identischen Zeilen finden.Regex Wie finde ich zwei oder mehr identische Linien mit einer Linie zwischen in einer Datei

lorem 
abcdefg 
lorem 
abcdefg 
lorem 
lorem 
abcdefg 
abcdefg 
lorem 
lorem 

in dieser Stichprobe sollten die Linien 2 und 4 entsprechen, aber nicht dann Linien 4 und 7 und nicht die Linien 7 und 8 ist es möglich?

+1

Welche Umgebung? Was hast du bis jetzt gemacht? Hast du gelesen, was ein [mcve] macht? – sjsam

+0

jetzt habe ich es gelesen :-) Umgebung ist Windows und findstr – gsxr1300

+0

Schätzen Sie Zeit beim Lesen. Jetzt poste bitte deine Bemühungen als Code in Frage. :-) – sjsam

Antwort

1

Da Sie nicht die Sprache sagen, dass ich so etwas wie tun würde:

abc([^\n]+)\n[^\n]*\nabc(\1) 

, die für die Kontrolle:

  • Letters abc.
  • eine erfasste Gruppe ohne neue Zeilen.
  • Das neue Zeilenzeichen.
  • Eine komplette neue Linie.
  • Das neue Zeilenzeichen.
  • Der zuvor übereinstimmende erste Gruppeninhalt.

Überprüfen Sie, ob seine für Ihre Sprache verfügbar: http://www.regular-expressions.info/refext.html (zum Beispiel in .NET nicht gültig ist).

+2

Warum nicht einfach 'abc ([^ \ n] +) \ n [^ \ n] * \ nabc (\ 1)'. Das * wird * in .NET und vermutlich den meisten, wenn nicht allen, Regex-Varianten funktionieren. –

+0

ich versuche es mit diesem "(abc. * \ N. * \ Nabc. *)/G" in regex101 und da funktioniert es. – gsxr1300

+0

ich brauche es in Windows findstr oder im "Suchen und Ersetzen" -Programm, aber dort habe ich keine Übereinstimmung. – gsxr1300

Verwandte Themen