logo

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

Voorwaarde: Reguliere expressie met voorbeelden | Python

Een reguliere expressie (ook wel een rationele expressie genoemd) is een reeks tekens die een zoekpatroon definiƫren, voornamelijk voor gebruik bij het matchen van patronen met tekenreeksen, of het matchen van tekenreeksen, dat wil zeggen zoek- en vervangachtige bewerkingen. Reguliere expressies zijn een algemene manier om patronen te matchen met reeksen tekens.



Module Reguliere expressies (RE) specificeert een reeks tekenreeksen (patroon) die ermee overeenkomen. Om de RE-analogie te begrijpen,MetaCharacters>zijn nuttig, belangrijk en zullen worden gebruikt in functies van de modulere>.

Er zijn in totaal 14 metatekens en deze worden besproken in functies:

  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>

onderzoek()

re.search()>methode retourneert Geen (als het patroon niet overeenkomt), of are.MatchObject>die informatie bevat over het overeenkomende deel van de string. Deze methode stopt na de eerste overeenkomst, dus deze is het meest geschikt voor het testen van een reguliere expressie in plaats van voor het extraheren van gegevens.



Voorbeeld:

Python3






# 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.'>)>

>

>

Uitgang:

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

opnieuw vinden()

Retourneert alle niet-overlappende patroonovereenkomsten in string, als een lijst met strings. De tekenreeks wordt van links naar rechts gescand en overeenkomsten worden geretourneerd in de gevonden volgorde.

Voorbeeld:

Python3




genummerd alfabet
# 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)>

>

>

Uitgang:

 ['123456789', '987654321']>