logo

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

Condiție preliminară: Expresie regulată cu exemple | Piton

O expresie regulată (uneori numită expresie rațională) este o secvență de caractere care definește un model de căutare, în principal pentru utilizarea în potrivirea modelelor cu șiruri de caractere sau potrivirea șirurilor de caractere, adică operațiuni asemănătoare de căutare și înlocuire. Expresiile regulate sunt o modalitate generalizată de a potrivi modele cu secvențe de caractere.



Modul Expresii regulate (RE) specifică un set de șiruri (model) care se potrivește cu acesta. Pentru a înțelege analogia RE,MetaCharacters>sunt utile, importante și vor fi folosite în funcțiile modululuire>.

0,2 sub formă de fracție

Există un total de 14 metacaractere și vor fi discutate pe măsură ce acestea urmează în funcții:

  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>

cercetare()

re.search()>metoda returnează nici unul (dacă modelul nu se potrivește), fie are.MatchObject>care conține informații despre partea potrivită a șirului. Această metodă se oprește după prima potrivire, deci aceasta este cea mai potrivită pentru testarea unei expresii regulate mai mult decât pentru extragerea datelor.



Exemplu:

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

>

eliminând ultimul comit git
>

Ieșire:

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

re.findall()

Returnează toate potrivirile de tipar care nu se suprapun în șir, ca o listă de șiruri. Șirul este scanat de la stânga la dreapta, iar potrivirile sunt returnate în ordinea găsită.

Exemplu:

Python3


aes vs des



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

>

>

Ieșire:

 ['123456789', '987654321']>