2017-07-20 2 views
-2

Ich habe 2 Strings und möchte alle Positionen einer Zeichenfolge innerhalb einer anderen finden. String.find funktioniert, aber nicht Regex.`str.find` funktioniert, aber` re.finditer` findet keine Übereinstimmung

sub: (mag nicht auf) Aufruf in

str1: ich kann nicht (nicht will, zu) -Aufruf in

str1.find(sub) returns 7 but 
    [(m.start(0), m.end(0)) for m in re.finditer(sub,str1)] returns empty list 

Antwort

1

Die Klammern sind Metazeichen in regex (verwendet, um Gruppen zu erfassen), so dass Sie ‚ll brauchen, um sie zu entkommen, wenn sie buchstäblich behandelt werden sollen:

sub = '\(dont want to\) call in' 

Alternativ können Sie re.escape verwenden, die automatisch die Meta-Zeichen für Sie entkommt:

re.finditer(re.escape('(dont want to) call in'), str1) 
Verwandte Themen