logo

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

Nödvändig förutsättning: Reguljärt uttryck med exempel | Pytonorm

Ett reguljärt uttryck (kallas ibland ett rationellt uttryck) är en sekvens av tecken som definierar ett sökmönster, huvudsakligen för användning i mönstermatchning med strängar, eller strängmatchning, dvs hitta och ersätt-liknande operationer. Reguljära uttryck är ett generaliserat sätt att matcha mönster med teckensekvenser.



Modul Reguljära uttryck (RE) anger en uppsättning strängar (mönster) som matchar den. För att förstå RE-analogin,MetaCharacters>är användbara, viktiga och kommer att användas i modulens funktionerre>.

Det finns totalt 14 metakaraktärer och kommer att diskuteras när de följer i funktioner:

  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>

forskning()

re.search()>metod returnerar antingen Ingen (om mönstret inte matchar), eller enre.MatchObject>som innehåller information om den matchande delen av strängen. Denna metod slutar efter den första matchningen, så den lämpar sig bäst för att testa ett reguljärt uttryck mer än att extrahera data.



Exempel:

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

int sträng
>

>

Produktion:

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

re.findall()

Returnera alla icke-överlappande matchningar av mönster i sträng, som en lista med strängar. Strängen skannas från vänster till höger och matchningar returneras i den ordning som hittas.

Exempel:

Python3




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

>

>

Produktion:

 ['123456789', '987654321']>