Python: Wie drucke ich eine passende Zeichenfolge?

8

Ich möchte einen Teil der Zeichenkette (ein bestimmtes Wort) abgleichen und ausdrucken. Genau was grep -o tut. Mein Wort ist beispielsweise "gelber Hund" und kann in einer Zeichenfolge gefunden werden, die sich über mehrere Zeilen erstreckt.

%Vor%

Lassen Sie uns diesen Regex ausprobieren mydog = re.compile(', .*\n') und dann if mydog.search(string): druckt nur die übereinstimmenden Wörter.

Wie bekomme ich nur "gelben Hund" in der Ausgabe?

    
minerals 12.09.2013, 10:35
quelle

2 Antworten

12

Eine Erfassungsgruppe verwenden und alle finden:

%Vor%

Wenn Sie nur die erste Übereinstimmung wollen, dann:

%Vor%

Hinweis: Sie möchten IndexError verarbeiten, wenn s keine Übereinstimmung enthält.

    
Chris Seymour 12.09.2013, 10:44
quelle
4

Wenn Sie keine Erfassungsgruppe angeben, wird der Text, der dem gesamten Ausdruck entspricht, in matchResult.group(0) enthalten sein. In Ihrem Fall wäre dies ', yellow dog\n' . Wenn Sie nur yellow dow möchten, sollten Sie eine Fanggruppe zum Ausdruck hinzufügen: , (.*?)\n . Beachten Sie, dass ich auch die .* in eine .*? geändert habe, so dass sie nicht gierig ist, und halte sie an, wenn sie die erste Zeilenumbruch findet.

%Vor%     
poke 12.09.2013 10:42
quelle

Tags und Links