logo

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

Priekšnosacījums: Regulārā izteiksme ar piemēriem | Python

Regulārā izteiksme (dažreiz saukta par racionālu izteiksmi) ir rakstzīmju secība, kas definē meklēšanas modeli, galvenokārt izmantošanai paraugu saskaņošanai ar virknēm vai virkņu saskaņošanai, t.i., meklēšanai un aizstāšanai līdzīgām darbībām. Regulārās izteiksmes ir vispārināts veids, kā saskaņot modeļus ar rakstzīmju secībām.



Modulis Regulārās izteiksmes (RE) norāda virkņu kopu (rakstu), kas tai atbilst. Lai saprastu RE analoģiju,MetaCharacters>ir noderīgi, svarīgi un tiks izmantoti moduļa funkcijāsre>.

Kopumā ir 14 metarakstzīmes, un tās tiks apspriestas, iedalot funkcijās:

  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>

re.search()

re.search()>metode vai nu atgriež Nav (ja modelis neatbilst), vai are.MatchObject>kas satur informāciju par atbilstošo virknes daļu. Šī metode tiek pārtraukta pēc pirmās atbilstības, tāpēc tā ir vislabāk piemērota regulāras izteiksmes pārbaudei, nevis datu iegūšanai.



Piemērs:

Python3






kārtot masīvu sarakstu Java

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

>

>

Izvade:

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

re.findall()

Atgriezt visas virknes raksta atbilstības, kas nepārklājas, kā virkņu sarakstu. Virkne tiek skenēta no kreisās uz labo pusi, un atbilstības tiek atgrieztas atrastajā secībā.

Piemērs:

vienāds ar java

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

>

>

Izvade:

 ['123456789', '987654321']>