Python RegEx Matching Newline

8

Ich habe den folgenden regulären Ausdruck:

%Vor%

Was ich in Expresso gegen die Datei, die ich gerade arbeite, getestet habe und das Match ist erfolgreich.

Ich möchte Folgendes anpassen:

  • Referenznummer 8 Ziffern lang
  • Jedes Zeichen, beliebig oft
  • Neue Zeile
  • Jedes Zeichen, beliebig oft
  • Neue Zeile
  • Jedes Zeichen, beliebig oft
  • Neue Zeile
  • Jedes Zeichen, beliebig oft
  • Neue Zeile
  • Jedes Zeichen, beliebig oft

Mein Python-Code ist:

%Vor%

Aber es werden keine Matches produziert, wie in Expresso gesagt, es gibt mehr als 400 Matches, was ich erwarten würde.

Was mir hier fehlt?

    
humira 17.09.2010, 09:14
quelle

1 Antwort

12

Verwenden Sie nicht re.DOTALL oder der Punkt wird auch mit Zeilenumbrüchen übereinstimmen. Verwenden Sie auch rohe Zeichenfolgen ( r"..." ) für Regexes:

%Vor%

Allerdings sollte Ihre Version immer noch funktionieren (obwohl sehr ineffizient) wenn Sie die gesamte Datei als Binärdatei in den Speicher als eine große Zeichenfolge gelesen haben.

Die Frage ist also, lesen Sie die Datei so:

%Vor%

Oder arbeiten Sie mit einzelnen Zeilen ( for line in myfile: oder myfile.readlines() )? In diesem Fall kann die Regex natürlich nicht funktionieren.

    
Tim Pietzcker 17.09.2010, 09:23
quelle

Tags und Links