logo

Regulārā izteiksme (RegEx) programmā Python ar piemēriem

A Regulārā izteiksme vai regulārā izteiksme ir īpaša rakstzīmju secība, kas izmanto meklēšanas modeli, lai atrastu virkni vai virkņu kopu.

Tas var noteikt teksta esamību vai neesamību, saskaņojot to ar noteiktu rakstu, kā arī var sadalīt rakstu vienā vai vairākos apakšmoteros.

Regex modulis Python

Python ir iebūvēts modulis ar nosaukumu re kas tiek izmantots Python regulārām izteiksmēm. Mēs varam importēt šo moduli, izmantojot importēšanas paziņojumu.



Piemērs: Re moduļa importēšana programmā Python

Python3




# importing re module> import> re>

>

>

Kā lietot RegEx Python?

Pēc re moduļa importēšanas programmā Python varat izmantot RegEx.

Piemērs:

Šis Python kods vārda meklēšanai izmanto regulāras izteiksmes portāls dotajā virknē un pēc tam izdrukā atbilstošā vārda sākuma un beigu rādītājus virknē.

Python3




import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())>

>

>

Izvade

Start Index: 34 End Index: 40>

Piezīme: Šeit r rakstzīme (r'portal') apzīmē neapstrādātu, nevis regulāru izteiksmi. Neapstrādātā virkne nedaudz atšķiras no parastās virknes, tā neinterpretēs rakstzīmi kā atsoļa rakstzīmi. Tas ir tāpēc, ka regulārās izteiksmes dzinējs izmanto rakstzīmi savam aizbēgšanas mērķim.

Pirms sākat ar Python regex moduli, redzēsim, kā faktiski rakstīt regulāro izteiksmi, izmantojot metarakstzīmes vai īpašas secības.

Metaraksti

Metaraksti ir rakstzīmes ar īpašu nozīmi.

Lai saprastu RE analoģiju, metaraksti ir noderīgi un svarīgi. Tie tiks izmantoti moduļa re funkcijās. Zemāk ir metarakstzīmju saraksts.

Metarakstzīmes

Apraksts

Izmanto, lai pēc tam noņemtu rakstzīmes īpašo nozīmi

java miegs

[]

Pārstāvēt rakstzīmju klasi

^

Atbilst sākumam

$

Atbilst beigām

.

Atbilst jebkurai rakstzīmei, izņemot rindiņu

|

Nozīmē VAI (atbilst jebkurai rakstzīmei, kas ir atdalīta ar to.

?

Atbilst nullei vai vienam gadījumam

*

Jebkurš gadījumu skaits (ieskaitot 0 gadījumu)

+

Viens vai vairāki gadījumi

{}

Norādiet iepriekšējā regulārā izteiksmes gadījumu skaitu, lai tas atbilstu.

()

Iekļaujiet Regex grupu

Detalizēti apspriedīsim katru no šīm metarakstzīmēm:

1. – slīpsvītra

Apgrieztā slīpsvītra () nodrošina, ka rakstzīme netiek apstrādāta īpašā veidā. To var uzskatīt par veidu, kā izvairīties no metaraksturiem.

Piemēram, ja vēlaties virknē meklēt punktu (.), jūs redzēsit, ka punkts (.) tiks uzskatīts par īpašu rakstzīmi, tāpat kā viena no metarakstzīmēm (kā parādīts iepriekšējā tabulā). Tāpēc šajā gadījumā mēs izmantosim atpakaļvērsto slīpsvītru () tieši pirms punkta (.), lai tā zaudētu savu specialitāti. Lai labāk izprastu, skatiet tālāk redzamo piemēru.

Piemērs:

Pirmā meklēšana ( re.search(r'.', s)> ) atbilst jebkurai rakstzīmei, ne tikai periodam, bet otrajā meklēšanā ( re.search(r'.', s)> ) īpaši meklē un atbilst perioda raksturam.

Python3




import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)>

>

>

Izvade

>

2. [] – kvadrātiekavas

Kvadrātiekavas ([]) apzīmē rakstzīmju klasi, kas sastāv no rakstzīmju kopas, kuras mēs vēlamies saskaņot. Piemēram, rakstzīmju klase [abc] atbildīs jebkuram atsevišķam a, b vai c.

Mēs varam arī norādīt rakstzīmju diapazonu, izmantojot – kvadrātiekavās. Piemēram,

  • [0, 3] ir paraugs kā [0123]
  • [a-c] ir tāds pats kā [abc]

Mēs varam arī apgriezt rakstzīmju klasi, izmantojot simbolu caret(^). Piemēram,

  • [^0-3] nozīmē jebkuru skaitli, izņemot 0, 1, 2 vai 3
  • [^a-c] nozīmē jebkuru rakstzīmi, izņemot a, b vai c

Piemērs:

Šajā kodā jūs izmantojat regulāras izteiksmes, lai virknē atrastu visas rakstzīmes, kas ietilpst diapazonā no “a” līdz “m”. The re.findall()> funkcija atgriež visu šādu rakstzīmju sarakstu. Dotajā virknē rakstzīmes, kas atbilst šim modelim, ir: 'c', 'k', 'b', 'f', 'j', 'e', 'h', 'l', 'd', ' g'.

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)>

>

>

Izvade

['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>

3. ^ – Caret

Simbols Caret (^) atbilst virknes sākumam, t.i., pārbauda, ​​vai virkne sākas ar norādīto(-ajām) rakstzīmi(-ēm). Piemēram -

  • ^g pārbaudīs, vai virkne sākas ar g, piemēram, geeks, globe, girl, g utt.
  • ^ge pārbaudīs, vai virkne sākas ar ge, piemēram, geeks, geeksforgeeks utt.

Piemērs:

Šis kods izmanto regulāras izteiksmes, lai pārbaudītu, vai virkņu saraksts sākas ar The . Ja virkne sākas ar Tas ir atzīmēts kā Atbilstošs pretējā gadījumā tas ir apzīmēts kā Neatbilst.

Python3




import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)>

>

>

Izvade

Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>

4. $ – dolārs

Dolāra ($) simbols atbilst virknes beigām, t.i., pārbauda, ​​vai virkne beidzas ar norādīto(-ajām) rakstzīmi(-ēm). Piemēram-

  • s$ pārbaudīs virkni, kas beidzas ar, piemēram, geeks, ends, s utt.
  • ks$ pārbaudīs virkni, kas beidzas ar ks, piemēram, geeks, geeksforgeeks, ks utt.

Piemērs:

Šis kods izmanto regulāro izteiksmi, lai pārbaudītu, vai virkne beidzas ar Pasaule!. Ja tiek atrasta atbilstība, tā tiek izdrukāta Atbilstība atrasta! pretējā gadījumā tas drukā Atbilstība nav atrasta .

Python3




import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Izvade

Match found!>

5. . – Punkts

Punkta (.) simbols atbilst tikai vienai rakstzīmei, izņemot jaunās rindiņas rakstzīmi ( ). Piemēram -

  • a.b pārbaudīs virkni, kas satur jebkuru rakstzīmi punkta vietā, piemēram, acb, acbd, abbb utt.
  • .. pārbaudīs, vai virknē ir vismaz 2 rakstzīmes

Piemērs:

Šis kods modeļa meklēšanai izmanto regulāro izteiksmi brūns.lapsa virknes ietvaros. Punkts (.>) shēmā apzīmē jebkuru rakstzīmi. Ja tiek atrasta atbilstība, tā tiek izdrukāta Atbilstība atrasta! pretējā gadījumā tas drukā Atbilstība nav atrasta .

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Izvade

javascript globālie mainīgie
Match found!>

6. | – Vai

Vai simbols darbojas kā operators vai, kas nozīmē, ka tas pārbauda, ​​vai raksts pirms vai pēc simbola vai ir vai nav virknē. Piemēram -

  • a|b atbilst jebkurai virknei, kas satur a vai b, piemēram, acd, bcd, abcd utt.

7. ? - Jautājuma zīme

Jautājuma zīme (?) ir kvantors regulārajās izteiksmēs, kas norāda, ka iepriekšējais elements ir jāsaskaņo ar nulli vai vienu reizi. Tas ļauj norādīt, ka elements nav obligāts, tas nozīmē, ka tas var parādīties vienreiz vai vispār nenotiek. Piemēram,

  • ab?c tiks saskaņots ar virkni ac, acb, dabc, bet netiks saskaņots ar abbc, jo ir divi b. Tāpat tas netiks saskaņots ar abdc, jo b neseko c.

8.* – Zvaigzne

Zvaigznes (*) simbols atbilst nullei vai vairākiem regulārā izteiksmes gadījumiem pirms simbola *. Piemēram -

  • ab*c tiks saskaņots ar virkni ac, abc, abbbc, dabc utt., bet netiks saskaņots ar abdc, jo b neseko c.

9. + – Plus

Plus (+) simbols atbilst vienam vai vairākiem regulārā izteiksmes gadījumiem pirms simbola +. Piemēram -

  • ab+c tiks saskaņots ar virkni abc, abbc, dabc, bet netiks saskaņots ar ac, abdc, jo ac nav b un b, neseko c abdc.

10. {m, n} – breketes

Iekavas atbilst visiem atkārtojumiem pirms regulārā izteiksmes no m līdz n, ieskaitot. Piemēram -

  • a{2, 4} tiks saskaņots ar virkni aaab, baaaac, gaad, bet netiks saskaņots ar virknēm, piemēram, abc, bc, jo abos gadījumos ir tikai viens a vai nav.

11. () – Grupa

Grupas simbols tiek izmantots, lai grupētu apakšgrupas. Piemēram -

  • (a|b)cd atbilst virknēm, piemēram, acd, abcd, gacd utt.

Īpašas secības

Īpašas secības neatbilst faktiskajai rakstzīmei virknē, tā vietā tā norāda konkrēto atrašanās vietu meklēšanas virknē, kur jāatbilst. Tas atvieglo bieži lietotu modeļu rakstīšanu.

Īpašo secību saraksts

Īpaša secība

Apraksts

Piemēri

A

Atbilst, ja virkne sākas ar norādīto rakstzīmi

Aphor

par geeks

par pasauli



Atbilst, ja vārds sākas vai beidzas ar norādīto rakstzīmi. (virkne) pārbaudīs vārda sākumu un (virkne) pārbaudīs vārda beigas.

ge

geeks

gūt

B

Tas ir pretējs , t.i., virknei nevajadzētu sākt vai beigties ar doto regulāro izteiksmi.

Bge

kopā

kalums

d

Atbilst jebkuram decimālajam ciparam, tas ir līdzvērtīgs iestatītajai klasei [0-9]

d

123

jū1

D

Atbilst jebkurai rakstzīmei, kas nav ciparu, tā ir līdzvērtīga iestatītajai klasei [^0-9]

D

geeks

geek1

s

Atbilst jebkurai atstarpes rakstzīmei.

s

jū ks

a bc a

S

Atbilst jebkurai rakstzīmei, kas nav atstarpes

S

a bd

abcd

In

Atbilst jebkurai burtciparu rakstzīmei, tas ir līdzvērtīgs klasei [a-zA-Z0-9_].

In

123

geeKs4

IN

Atbilst jebkurai rakstzīmei, kas nav burtciparu rakstzīme.

IN

>$

dot

AR

Atbilst, ja virkne beidzas ar doto regulāro izteiksmi

ab

abcdab

babababs

RegEx funkcijas

re modulis satur daudz funkcijas kas palīdz mums meklēt virkni atbilstību.

Apskatīsim dažādas funkcijas, ko nodrošina šis modulis, lai strādātu ar regex programmā Python.

Funkcija Apraksts
re.findall() atrod un atgriež visus atbilstošos gadījumus sarakstā
re.compile() Regulārās izteiksmes tiek apkopotas parauga objektos
re.split() Sadaliet virkni pēc rakstzīmes vai raksta sastopamības.
re.sub() Aizstāj visus rakstzīmes vai rakstzīmes gadījumus ar aizstājējvirkni.
re.escape() Izvairās no īpaša rakstura
re.search() Meklē rakstzīmes vai raksta pirmo reizi

Apskatīsim šo RegEx funkciju darbību ar definīciju un piemēriem:

1. 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ā.

Visu parauga gadījumu atrašana

Šis kods izmanto regulāru izteiksmi ( d+> ) lai atrastu visas viena vai vairāku ciparu secības dotajā virknē. Tā meklē skaitliskās vērtības un saglabā tās sarakstā. Šajā piemērā tas atrod un izdrukā skaitļus 123456789 un 987654321 no ievades virknes.

Python3




import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

>

Izvade

['123456789', '987654321']>

2. re.compile()

Regulārās izteiksmes tiek apkopotas paraugu objektos, kuriem ir metodes dažādām darbībām, piemēram, modeļu atbilstības meklēšanai vai virkņu aizstāšanai.

1. piemērs:

Kods izmanto regulāras izteiksmes modeli [a-e]> lai atrastu un uzskaitītu visus mazos burtus no “a” līdz “e” ievades virknē Jā, sacīja Gibensons Stārks. Iznākums būs ['e', 'a', 'd', 'b', 'e']> , kas ir atbilstošās rakstzīmes.

Python




import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))>

>

>

Izvade

java lietošanas datums
['e', 'a', 'd', 'b', 'e', 'a']>

Izejas izpratne:

  • Pirmais gadījums ir “e” valodā Aye, nevis “A”, jo tas ir reģistrjutīgs.
  • Nākamais notikums ir “a” teiktajā, pēc tam “d” ir “d”, kam seko “b” un “e” Gibensonā, pēdējais “a” atbilst Starkam.
  • Metarakstzīmju slīpsvītrai “” ir ļoti svarīga loma, jo tā signalizē par dažādām sekvencēm. Ja atpakaļvērstā slīpsvītra ir jāizmanto kā metaraksts bez īpašas nozīmes, izmantojiet “”

2. piemērs: Iestatīšanas klase [s,.] atbildīs jebkurai atstarpes rakstzīmei “,” vai “.”.

Kods izmanto regulāras izteiksmes, lai atrastu un uzskaitītu visus atsevišķus ciparus un ciparu secības dotajās ievades virknēs. Tā atrod vienu ciparu ar d> un ciparu secības ar d+> .

Python




import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))>

>

>

Izvade

['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>

3. piemērs:

Kods izmanto regulāras izteiksmes, lai atrastu un uzskaitītu vārdu rakstzīmes, vārdu rakstzīmju secības un rakstzīmes, kas nav vārda rakstzīmes ievades virknēs. Tas nodrošina atbilstošo rakstzīmju vai secību sarakstus.

Python




import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))>

>

>

Izvade

['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>

4. piemērs:

Kods izmanto regulārās izteiksmes modeli “ab*”, lai atrastu un uzskaitītu visus “ab” gadījumus, kam seko nulle vai vairākas “b” rakstzīmes ievades virknē abbabbaabbb. Tas atgriež šādu atbilstību sarakstu: ['ab', 'abb', 'abbb'].

Python




import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))>

>

mašīnraksta slēdzis

>

Izvade

['ab', 'abb', 'a', 'abbb']>

Izejas izpratne:

  • Mūsu RE ir ab*, ko “a” pavada jebkurš nr. no “b”, sākot no 0.
  • Izvade “ab” ir derīga, jo ir viens “a”, kam pievienots viens “b”.
  • Izvade “abb” ir derīga, jo ir viens “a”, kam pievienoti divi “b”.
  • Izvade “a” ir derīga, jo ir viens “a”, kam pievienots 0 “b”.
  • Izvade “abbb” ir derīga, jo ir viens “a”, kam pievienots 3 “b”.

3. re.split()

Sadaliet virkni pēc rakstzīmes vai raksta gadījumiem, kad šis raksts tiek atrasts, atlikušās virknes rakstzīmes tiek atgrieztas kā daļa no iegūtā saraksta.

Sintakse :

re.split(pattern, string, maxsplit=0, flags=0)>

Pirmais parametrs, modelis apzīmē regulāro izteiksmi, virkne ir dotā virkne, kurā tiks meklēts modelis un kurā notiek sadalīšana, maxsplit, ja nav norādīts, tiek uzskatīts par nulli '0', un, ja ir norādīta vērtība, kas nav nulles, tad maksimums, ka notiek daudzas šķelšanās. Ja maxsplit = 1, tad virkne tiks sadalīta tikai vienu reizi, iegūstot sarakstu ar garumu 2. Karogi ir ļoti noderīgi un var palīdzēt saīsināt kodu, tie nav nepieciešami parametri, piemēram: flags = re.IGNORECASE, šajā sadalījumā , reģistrs, t.i., mazie vai lielie burti tiks ignorēti.

1. piemērs:

Sadala virkni, izmantojot nevārdu rakstzīmes un atstarpes kā atdalītājus, atgriežot vārdus: ['Words', 'words', 'Words']> . Apostrofus uzskata par rakstzīmēm, kas nav vārdu rakstzīmes: ['Word', 's', 'words', 'Words']> . Sadala, izmantojot rakstzīmes un ciparus, kas nav vārdi: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Sadala, izmantojot ciparus kā atdalītāju: ['On ', 'th Jan ', ', at ', ':', ' AM']> .

Python




from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))>

>

>

Izvade

['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>

2. piemērs:

Pirmais priekšraksts sadala virkni, kad pirmo reizi parādās viens vai vairāki cipari: ['On ', 'th Jan 2016, at 11:02 AM']> . sekunde sadala virkni, izmantojot mazos burtus no a līdz f kā atdalītājus, reģistrjutīgi: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Trešais sadala virkni, izmantojot mazos burtus no a līdz f kā atdalītājus, reģistrjutīgs: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

Python




import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))>

>

>

Izvade

['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>

4. re.sub()

Funkcijā 'sub' apzīmē apakšvirkni, dotajā virknē (3. parametrs) tiek meklēts noteikts regulārās izteiksmes modelis, un, atrodot apakšvirknes modeli, tiek aizstāts ar repl (2. parametrs), skaitīšana pārbauda un uztur reižu skaitu tas notiek.

Sintakse:

 re.sub(pattern, repl, string, count=0, flags=0)>

1. piemērs:

  • Pirmais priekšraksts visus “ub” gadījumus aizstāj ar “~*” (nejutīgs reģistrs): 'S~*ject has ~*er booked already'> .
  • Otrais paziņojums visus “ub” gadījumus aizstāj ar “~*” (reģistrjutīgs): 'S~*ject has Uber booked already'> .
  • Trešais priekšraksts aizstāj pirmo “ub” gadījumu ar “~*” (nejutīgs reģistrs): 'S~*ject has Uber booked already'> .
  • Ceturtajā vietā “UN” tiek aizstāts ar “&” (nejutīgs reģistrs): 'Baked Beans & Spam'> .

Python




import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))>

>

>

Izvade

S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>

5. re.subn()

subn() ir līdzīgs sub() visos veidos, izņemot izvades nodrošināšanas veidu. Tas atgriež virkni ar kopējo aizstāšanas un jaunās virknes skaitu, nevis tikai virkni.

Sintakse:

 re.subn(pattern, repl, string, count=0, flags=0)>

Piemērs:

re.subn()> aizstāj visus parauga gadījumus virknē un atgriež korteci ar modificēto virkni un veikto aizstāšanu skaitu. Tas ir noderīgi gan reģistrjutīgai, gan reģistrjutīgai aizstāšanai.

Python




import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])>

>

>

Izvade

('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already>

6. re.escape()

Atgriež virkni ar slīpsvītru, kurā nav burtu un ciparu. Tas ir noderīgi, ja vēlaties saskaņot patvaļīgu burtisku virkni, kurā var būt regulāras izteiksmes metarakstzīmes.

Sintakse:

re.escape(string)>

Piemērs:

re.escape()> tiek izmantots, lai virknē izvairītos no īpašām rakstzīmēm, padarot to droši lietojamu kā paraugu regulārajās izteiksmēs. Tas nodrošina, ka visas rakstzīmes ar īpašām nozīmēm regulārajās izteiksmēs tiek uzskatītas par burtiskām rakstzīmēm.

Python




import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))>

>

>

Izvade

This is Awesome even 1 AM I Asked what is this [a-9], he said   ^WoW>

7. re.search()

Šī metode vai nu atgriež Nav (ja modelis neatbilst), vai arī re.MatchObject 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: Raksta gadījuma meklēšana

Šis kods izmanto regulāro izteiksmi, lai meklētu paraugu dotajā virknē. Ja tiek atrasta atbilstība, tā izņem un izdrukā atbilstošās virknes daļas.

Šajā konkrētajā piemērā tas meklē paraugu, kas sastāv no mēneša (burtiem), kam seko diena (cipari) ievades virknē, kurā esmu dzimis 24. jūnijā. Ja tiek atrasta atbilstība, tiek izdrukāta pilna atbilstība — mēnesis. , un diena.

Python3




import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >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>

KOMPLEKTI

A Iestatīt ir rakstzīmju kopa, kas ievietota iekavās “[]”. Kopas tiek izmantotas, lai atbilstu vienai rakstzīmei iekavās norādītajā rakstzīmju kopā. Zemāk ir komplektu saraksts:

Iestatīt Apraksts
{n,} Nosaka iepriekšējo rakstzīmi vai grupu un atbilst vismaz n gadījumiem.
* Nosaka iepriekšējo rakstzīmi vai grupu un saskaņo ar nulli vai vairākiem gadījumiem.
[0123] Atbilst norādītajiem cipariem (0, 1, 2 vai 3)
[^arn] atbilst jebkurai rakstzīmei, IZŅEMOT a, r un n
d Atbilst jebkuram ciparam (0-9).
[0-5][0-9] atbilst jebkuriem divciparu skaitļiem no 00 līdz 59
In Atbilst jebkurai burtciparu rakstzīmei (a-z, A-Z, 0-9 vai _).
[a-n] Atbilst jebkuram mazajam alfabētam starp a un n.
D Atbilst jebkurai rakstzīmei, kas nav ciparu.
[arn] atbilst, ja ir viena no norādītajām rakstzīmēm (a, r vai n).
[a-zA-Z] atbilst jebkurai rakstzīmei starp a un z, mazajiem VAI lielajiem burtiem
[0-9] atbilst jebkuram ciparam no 0 līdz 9

Saskaņot objektu

Atbilstības objekts satur visu informāciju par meklēšanu un rezultātu, un, ja atbilstība nav atrasta, tiks atgriezts neviens. Apskatīsim dažas no visbiežāk izmantotajām atbilstības objekta metodēm un atribūtiem.

instanceof

1. Virknes un regulārā izteiksmes iegūšana

match.re atribūts atgriež nodoto regulāro izteiksmi un match.string atribūts atgriež nodoto virkni.

Piemērs: Atbilstošā objekta virknes un regex iegūšana

Kods meklē burtu G pie vārda robežas virknē Laipni lūdzam GeeksForGeeks un izdrukā regulārās izteiksmes modeli ( res.re> ) un sākotnējā virkne ( res.string> ) .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)>

>

>

Izvade

re.compile('G') Welcome to GeeksForGeeks>

2. Atbilstošā objekta indeksa iegūšana

  • start() metode atgriež atbilstošās apakšvirknes sākuma indeksu
  • end() metode atgriež atbilstošās apakšvirknes beigu indeksu
  • Metode span() atgriež kortei, kas satur atbilstošās apakšvirknes sākuma un beigu indeksu

Piemērs: Atbilstošā objekta indeksa iegūšana

Kods meklē apakšvirkni Gee pie vārda robežas virknē Laipni lūdzam GeeksForGeeks un izdrukā atbilstības sākuma indeksu (res.start()>), spēles beigu rādītājs (res.end()>), un spēles ilgums (res.span()>).

Python3




import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())>

>

>

Izvade

11 14 (11, 14)>

3. Saskaņotās apakšvirknes iegūšana

grupa() metode atgriež to virknes daļu, kurai atbilst modeļi. Lai labāk izprastu, skatiet tālāk redzamo piemēru.

Piemērs: Tiek iegūta atbilstošā apakšvirkne

Kods meklē divu neciparu rakstzīmju secību, kam seko atstarpe un burts “t” virknē Laipni lūdzam GeeksForGeeks, un izdrukā atbilstošo tekstu, izmantojot res.group()> .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())>

>

>

Izvade

me t>

Iepriekš minētajā piemērā mūsu modelis nosaka virkni, kurā ir vismaz 2 rakstzīmes, kurām seko atstarpe, un šai atstarpei seko t.

Saistīts raksts:

Atsauce:
https://docs.python.org/2/library/re.html

Mēs esam apsprieduši RegEx programmā Python, esam izpētījuši metarakstus, funkcijas un īpašās secības programmā RegEx Python.

Regulārā izteiksme ir ļoti svarīgs Python jēdziens, mēs esam mēģinājuši to izskaidrot vienkāršā veidā. Ceru, ka tas palīdzēs jūsu Python ceļojumā!