Meine Frage ist die gleiche Frage wie How do I re.search or re.match on a whole file without reading it all into memory? aber anstelle von PythonPerl regex: Wie suche ich eine Datei nach einem mehrzeiligen Muster, ohne die ganze Datei in den Speicher zu schreiben?
Frage mit Perl: ich in der Lage sein wollen, einen regulären Ausdruck auf eine ganze Datei zu laufen, aber ich möchte in der Lage sein, nicht zu haben, um die ganze Datei sofort in den Speicher zu schreiben, da ich in Zukunft mit ziemlich großen Dateien arbeiten kann. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank!
Erläuterung: Ich kann zeilenweise nicht lesen, da es mehrere Zeilen umfassen kann.
Warum verwende ich Perl anstelle von Python? Ich habe genug Probleme mit Python Regex, dass ich zu Perl wechseln muss. Ich würde https://pypi.python.org/pypi/regex installieren, aber ich kann nicht, da mein Arbeitsplatz verständlicherweise Schreibzugriff auf sein Python-Installationsverzeichnis nicht erlaubt, und ich würde lieber eine langsame hin und her E-Mail-Kette mit IT für sie, um es für mich zu installieren, und zu vermeiden/oder mit weiteren Berechtigungsproblemen behandeln :)
EDIT: Beispiel Muster ich suche
assign signal0 = (cond1) ? val1 :
(cond2) ? val2 :
val3;
assign signal1[15:0] = {input1[7:0], input2[7:0]};
assign signal2[34:0] = { 4'b0,
subsig0[3:0],
subsig1,
subsig2,
subsig3[18:2],
subsig4[5:0]
};
ich bin für Muster wie die oben, dh eine variable Zuordnung nach oben suchen, bis ich ein Semikolon zu sehen. Die Regex würde mit jedem der obigen übereinstimmen, da ich nicht weiß, ob das Muster mehrzeilig ist oder nicht. Vielleicht so etwas wie /assign\s+\w+\s+=\s+[^;];/m
, das heißt, bis ich ein Semikolon
EDIT2 sehen: (danke!) Aus den Antworten, dass das Muster in Start Zersetzen erscheint, mittlere, & Ende Abschnitte könnte die beste Strategie sein, z.B. Verwenden des Bereichsoperators wie von einigen vorgeschlagen.
Sie würden also nur gerne den Teil behalten, dass Sie gegen in Speicher korrekt? Sie könnten dann versuchen, Zeilen progressivly lesen, bis Sie ein komplettes Spiel bekommen, und Linien am Anfang aufgeben, wenn es keine Warte Spiel –
ist, so dass Ihr Unternehmen in Ordnung ist mit Sie Ihre Entwicklungsarbeit auf eine ganz andere Sprache wechseln, aber sie gewann‘ t lässt du ein Modul installieren ??? – ThisSuitIsBlackNot
Haben Sie auch von [virtualenv] (http://docs.python-guide.org/en/latest/dev/virtualenvs/) gehört? Sie können alle gewünschten Module in Ihrem Home-Verzeichnis installieren, Sie benötigen keinen Root-Zugriff. – ThisSuitIsBlackNot