logo

Python Regex: re.search() VS re.findall()

Voraussetzung: Regulärer Ausdruck mit Beispielen | Python

Ein regulärer Ausdruck (manchmal auch Rationaler Ausdruck genannt) ist eine Folge von Zeichen, die ein Suchmuster definieren, hauptsächlich zur Verwendung beim Mustervergleich mit Zeichenfolgen oder beim Zeichenfolgenvergleich, d. h. bei Vorgängen, die dem Suchen und Ersetzen ähneln. Reguläre Ausdrücke sind eine verallgemeinerte Möglichkeit, Muster mit Zeichenfolgen abzugleichen.



Modul Reguläre Ausdrücke (RE) Gibt eine Reihe von Zeichenfolgen (Muster) an, die dazu passen. Um die RE-Analogie zu verstehen,MetaCharacters>sind nützlich, wichtig und werden in Funktionen des Moduls verwendetre>.

Es gibt insgesamt 14 Metazeichen und wir werden im Anschluss an ihre Funktionen besprochen:

  Used to drop the special meaning of character following it (discussed below) [] Represent a character class ^ Matches the beginning $ Matches the end . Matches any character except newline ? Matches zero or one occurrence. | Means OR (Matches with any of the characters separated by it. * Any number of occurrences (including 0 occurrences) + One or more occurrences {} Indicate number of occurrences of a preceding RE to match. () Enclose a group of REs>

Forschung()

re.search()>Die Methode gibt entweder None zurück (wenn das Muster nicht übereinstimmt) oder are.MatchObject>das Informationen über den passenden Teil der Zeichenfolge enthält. Diese Methode stoppt nach der ersten Übereinstimmung und eignet sich daher eher zum Testen eines regulären Ausdrucks als zum Extrahieren von Daten.



Befehl arp-a

Beispiel:

Python3




Wumpus-Welt



# A Python program to demonstrate working of re.match().> import> re> > # Lets use a regular expression to match a date string> # in the form of Month name followed by day number> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> > if> match !>=> None>:> > ># We reach here when the expression '([a-zA-Z]+) (d+)'> ># matches the date string.> > ># This will print [14, 21), since it matches at index 14> ># and ends at 21.> >print>(>'Match at index % s, % s'> %> (match.start(), match.end()))> > ># We us group() method to get all the matches and> ># captured groups. The groups contain the matched values.> ># In particular:> ># match.group(0) always returns the fully matched string> ># match.group(1) match.group(2), ... return the capture> ># groups in order from left to right in the input string> ># match.group() is equivalent to match.group(0)> > ># So this will print 'June 24'> >print>(>'Full match: % s'> %> (match.group(>0>)))> > ># So this will print 'June'> >print>(>'Month: % s'> %> (match.group(>1>)))> > ># So this will print '24'> >print>(>'Day: % s'> %> (match.group(>2>)))> > else>:> >print>(>'The regex pattern does not match.'>)>

>

aes vs des
>

Ausgabe:

 Match at index 14, 21 Full match: June 24 Month: June Day: 24>

re.findall()

Gibt alle nicht überlappenden Musterübereinstimmungen in der Zeichenfolge als Liste von Zeichenfolgen zurück. Die Zeichenfolge wird von links nach rechts durchsucht und Treffer werden in der gefundenen Reihenfolge zurückgegeben.

Beispiel:

Python3


erster Laptop



# A Python program to demonstrate working of> # findall()> import> re> > # A sample text string where regular expression> # is searched.> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> > # A sample regular expression to find digits.> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

Host-Linux

>

Ausgabe:

 ['123456789', '987654321']>