filtert Strings nach Regex in einer Liste

8

Ich möchte eine Liste von Zeichenfolgen in Python filtern, indem ich regex verwende. Im folgenden Fall behalten Sie nur die Dateien mit der Erweiterung '.npy'.

Der Code, der nicht funktioniert:

%Vor%

Der gleiche Regex funktioniert für mich in Ruby:

%Vor%

Was stimmt nicht mit dem Python-Code?

    
miluz 06.12.2015, 13:30
quelle

4 Antworten

15
%Vor%

re.match('regex') entspricht re.search('^regex') oder text.startswith('regex') aber regex Ausführung. Es wird nur überprüft, ob der String mit dem Regex beginnt.

Verwenden Sie stattdessen re.search() :

%Vor%

Ausgabe:

%Vor%

Und wenn Sie nur alle .npy -Dateien erhalten möchten, verwenden Sie einfach str.endswith() :

%Vor%     
Kevin Guan 06.12.2015, 13:35
quelle
3

Verwenden Sie einfach search - da die Übereinstimmung vom Anfang bis zum Ende (d. h. ganz) von String- und Suchtreffern an einer beliebigen Stelle in der Zeichenfolge beginnt.

%Vor%

Ausgabe -

%Vor%     
SIslam 06.12.2015 13:34
quelle
1

Wenn Sie mit übereinstimmen, muss das Muster den gesamten Eingabe. Erweitern Sie entweder den regulären Ausdruck:

%Vor%

Welches würde übereinstimmen:

%Vor%

Oder verwenden Sie re.search , welches

  

scannt durch die Zeichenfolge nach der ersten Position , in der das Muster für reguläre Ausdrücke eine Übereinstimmung erzeugt [...]

    
miku 06.12.2015 13:34
quelle
1

re.match() sucht nach einer Übereinstimmung am Anfang der Zeichenfolge. Sie können stattdessen re.search() verwenden.

    
Vlad 06.12.2015 13:35
quelle

Tags und Links