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.
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?
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.
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.
Tags und Links python regex python-2.7