A Säännöllinen lauseke tai säännöllinen lauseke on erityinen merkkijono, joka käyttää hakumallia merkkijonon tai merkkijonojoukon löytämiseen.
Se voi havaita tekstin olemassaolon tai puuttumisen yhdistämällä sen tiettyyn kuvioon ja voi myös jakaa kuvion yhdeksi tai useaksi alakuvioksi.
Regex-moduuli Pythonissa
Pythonissa on sisäänrakennettu moduuli nimeltä re jota käytetään Pythonin säännöllisissä lausekkeissa. Voimme tuoda tämän moduulin käyttämällä tuontilauseketta.
Esimerkki: Re-moduulin tuonti Pythonissa
Python 3
# importing re module> import> re> |
>
>
Kuinka käyttää RegEx-lausetta Pythonissa?
Voit käyttää RegExiä Pythonissa re-moduulin tuomisen jälkeen.
Esimerkki:
Tämä Python-koodi käyttää säännöllisiä lausekkeita sanan etsimiseen portaali annetussa merkkijonossa ja tulostaa sitten vastaavan sanan alku- ja loppuindeksit merkkijonon sisällä.
Python 3
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())> |
>
>Lähtö
Start Index: 34 End Index: 40>
Huomautus: Tässä r-merkki (r'portal') tarkoittaa raakaa, ei regexiä. Raaka merkkijono eroaa hieman tavallisesta merkkijonosta, se ei tulkitse -merkkiä pakomerkkinä. Tämä johtuu siitä, että säännöllinen lausekemoottori käyttää -merkkiä omaan pakenemistarkoitukseensa.
Ennen kuin aloitat Pythonin regex-moduulin käytön, katsotaan kuinka kirjoittaa regex metamerkkien tai erikoissekvenssien avulla.
Metahahmot
Metahahmot ovat hahmoja, joilla on erityinen merkitys.
RE-analogian ymmärtämiseksi metamerkit ovat hyödyllisiä ja tärkeitä. Niitä käytetään moduulin re toiminnoissa. Alla on luettelo metahahmoista.
| Metahahmot | Kuvaus |
|---|---|
| Käytetään poistamaan sitä seuraavan merkin erityismerkitys kuinka monta 0 miljardista | |
| [] | Edustaa hahmoluokkaa |
| ^ | Vastaa alkua |
| $ | Vastaa loppua |
| . | Vastaa mitä tahansa merkkiä paitsi rivinvaihtoa |
| | | Tarkoittaa TAI (vastaa mitä tahansa sillä erotettua merkkejä. |
| ? | Vastaa nollaa tai yhtä esiintymää |
| * | Mikä tahansa määrä esiintymiä (mukaan lukien 0 esiintymää) |
| + | Yksi tai useampi esiintyminen |
| {} | Ilmoita vastaavan edellisen säännöllisen lausekkeen esiintymisten lukumäärä. |
| () | Sisällytä Regex-ryhmä |
Keskustellaan jokaisesta näistä metahahmoista yksityiskohtaisesti:
1. – Kenoviiva
Kenoviiva () varmistaa, että merkkiä ei käsitellä erityisellä tavalla. Tätä voidaan pitää tapana paeta metahahmoja.
Jos esimerkiksi haluat etsiä merkkijonosta pistettä(.), huomaat, että pistettä(.) käsitellään erikoismerkkinä, kuten yhtä metamerkeistä (kuten yllä olevassa taulukossa näkyy). Joten tässä tapauksessa käytämme kenoviivaa() juuri ennen pistettä(.), jotta se menettää erikoisuutensa. Katso alla oleva esimerkki ymmärtääksesi paremmin.
Esimerkki:
Ensimmäinen haku ( re.search(r'.', s)> ) vastaa mitä tahansa merkkiä, ei vain pistettä, kun toinen haku ( re.search(r'.', s)> ) etsii nimenomaan aikakauden merkkiä ja vastaa sitä.
Python 3
import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)> |
>
>Lähtö
>
2. [] – Hakasulkeet
Hakasulkeet ([]) edustavat merkkiluokkaa, joka koostuu joukosta merkkejä, joita haluamme yhdistää. Esimerkiksi merkkiluokka [abc] vastaa mitä tahansa yksittäistä a, b tai c.
Voimme myös määrittää joukon merkkejä käyttämällä hakasulkeiden sisällä. Esimerkiksi,
- [0, 3] on esimerkki [0123]
- [a-c] on sama kuin [abc]
Voimme myös kääntää merkkiluokan käyttämällä caret(^) -symbolia. Esimerkiksi,
- [^0-3] tarkoittaa mitä tahansa lukua paitsi 0, 1, 2 tai 3
- [^a-c] tarkoittaa mitä tahansa merkkiä paitsi a, b tai c
Esimerkki:
Tässä koodissa käytät säännöllisiä lausekkeita löytääksesi kaikki merkkijonon merkit, jotka ovat välillä 'a' - 'm'. The re.findall()> funktio palauttaa luettelon kaikista tällaisista merkeistä. Annetussa merkkijonossa tätä mallia vastaavat merkit ovat: 'c', 'k', 'b', 'f', 'j', 'e', 'h', 'l', 'd', ' g'.
Python 3
import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)> |
>
>Lähtö
['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>
3. ^ – Caret
Merkkimerkki (^) vastaa merkkijonon alkua, eli tarkistaa, alkaako merkkijono annetuilla merkeillä vai ei. Esimerkiksi -
- ^g tarkistaa, alkaako merkkijono g:llä, kuten geeks, maapallo, tyttö, g jne.
- ^ge tarkistaa, alkaako merkkijono ge:llä, kuten geeks, geeksforgeeks jne.
Esimerkki:
Tämä koodi käyttää säännöllisiä lausekkeita tarkistaakseen, alkaako merkkijonoluettelo The . Jos merkkijono alkaa Se on merkitty osuviksi muuten se on merkitty nimellä Ei täsmää.
Python 3
char merkkijonoon javassa
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}'>)> |
>
>Lähtö
Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>
4. $ – Dollari
Dollari($)-symboli vastaa merkkijonon loppua, eli tarkistaa, päättyykö merkkijono annettuihin merkkeihin vai ei. Esimerkiksi-
- s$ tarkistaa merkkijonon, joka päättyy merkkijonoon, kuten geeks, ends, s jne.
- ks$ tarkistaa merkkijonon, joka päättyy ks:ään, kuten geeks, geeksforgeeks, ks jne.
Esimerkki:
Tämä koodi käyttää säännöllistä lauseketta tarkistaakseen, loppuuko merkkijono Maailman!. Jos vastaavuus löytyy, se tulostuu Ottelu löytynyt! muuten tulostuu Vastaavaa ei löytynyt .
Python 3
import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>Lähtö
Match found!>
5. . – Piste
Piste(.)-symboli vastaa vain yhtä merkkiä paitsi rivinvaihtomerkkiä ( ). Esimerkiksi -
- a.b tarkistaa merkkijonon, joka sisältää minkä tahansa merkin pisteen kohdalla, kuten acb, acbd, abbb jne.
- .. tarkistaa, sisältääkö merkkijono vähintään 2 merkkiä
Esimerkki:
Tämä koodi käyttää säännöllistä lauseketta mallin etsimiseen ruskea.kettu merkkijonon sisällä. Piste (.>) kuviossa edustaa mitä tahansa merkkiä. Jos vastaavuus löytyy, se tulostuu Ottelu löytynyt! muuten tulostuu Vastaavaa ei löytynyt .
Python 3
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.'>)> |
>
>Lähtö
Match found!>
6. | – Tai
Tai-symboli toimii operaattorina tai, mikä tarkoittaa, että se tarkistaa, onko merkkijonossa tai -symbolia edeltävä vai jälkeen oleva kuvio vai ei. Esimerkiksi -
- a|b vastaa mitä tahansa merkkijonoa, joka sisältää a:n tai b:n, kuten acd, bcd, abcd jne.
7. ? - Kysymysmerkki
Kysymysmerkki (?) on kvantori säännöllisissä lausekkeissa, joka osoittaa, että edeltävä elementti on sovitettava nollaksi tai kerran. Sen avulla voit määrittää, että elementti on valinnainen, mikä tarkoittaa, että se voi esiintyä kerran tai ei ollenkaan. Esimerkiksi,
- ab?c yhdistetään merkkijonolle ac, acb, dabc, mutta sitä ei sovita sanalle abbc, koska b on kaksi. Vastaavasti sitä ei soviteta abdc:lle, koska b:tä ei seuraa c.
8.* – Tähti
Tähtisymboli (*) vastaa nollaa tai useampaa *-symbolia edeltävän säännöllisen lausekkeen esiintymää. Esimerkiksi -
- ab*c vastaa merkkijonoa ac, abc, abbbc, dabc jne., mutta sitä ei sovita sanalle abdc, koska b:tä ei seuraa c.
9. + – Plus
Plussymboli (+) vastaa yhtä tai useampaa +-symbolia edeltävän säännöllisen lausekkeen esiintymää. Esimerkiksi -
- ab+c yhdistetään merkkijonolle abc, abbc, dabc, mutta sitä ei soviteta ac:lle, abdc:lle, koska ac:ssa ei ole b:tä ja b:tä ei seuraa c:ssä abdc.
10. {m, n} – Aaltosulkeet
Aaltosulkeet vastaavat mitä tahansa säännöllistä lauseketta edeltäviä toistoja välillä m ja n, molemmat mukaan lukien. Esimerkiksi -
- a{2, 4} vastaa merkkijonoa aaab, baaaac, gaad, mutta sitä ei sovita merkkijonoihin, kuten abc, bc, koska molemmissa tapauksissa on vain yksi a tai ei yhtään a:ta.
11. () – Ryhmä
Ryhmäsymbolia käytetään alikuvioiden ryhmittelyyn. Esimerkiksi -
- (a|b)cd vastaa merkkijonoja, kuten acd, abcd, gacd jne.
Erikoissekvenssit
Erikoissekvenssit eivät vastaa merkkijonon varsinaista merkkiä, vaan se kertoo tietyn paikan hakumerkkijonossa, jossa vastaavuuden on tapahduttava. Se helpottaa yleisesti käytettyjen kuvioiden kirjoittamista.
Luettelo erityisistä sarjoista
| Erikoissekvenssi | Kuvaus | Esimerkkejä | |
|---|---|---|---|
| A | Vastaa, jos merkkijono alkaa annetulla merkillä | Aphor | nörteille |
| maailman puolesta | |||
| Vastaa, alkaako vai päättyykö sana annettuun merkkiin. (merkkijono) tarkistaa sanan alun ja (merkkijono) tarkistaa sanan lopun. | ge | nörttiä | |
| saada | |||
| B | Se on :n vastakohta, eli merkkijono ei saa alkaa tai päättyä annettuun säännölliseen lausekkeeseen. | Bge | yhdessä |
| takoa | |||
| d | Vastaa mitä tahansa desimaalilukua, tämä vastaa asetettua luokkaa [0-9] | d | 123 |
| jee1 | |||
| D | Vastaa mitä tahansa ei-numeroista merkkiä, tämä vastaa asetettua luokkaa [^0-9] | D | nörttiä |
| nörtti1 | |||
| s | Vastaa mitä tahansa välilyöntiä. | s | jee ks |
| a bc a | |||
| S | Vastaa mitä tahansa muuta kuin välilyöntiä olevaa merkkiä | S | a bd |
| abcd | |||
| Sisään | Vastaa mitä tahansa aakkosnumeerista merkkiä, tämä vastaa luokkaa [a-zA-Z0-9_]. | Sisään | 123 |
| geeKs4 | |||
| SISÄÄN | Vastaa mitä tahansa ei-aakkosnumeerista merkkiä. | SISÄÄN | >$ |
| antaa | |||
| KANSSA | Vastaa, jos merkkijono päättyy annettuun säännölliseen lausekkeeseen | ab | abcdab |
| bababab |
RegEx-funktiot
re moduuli sisältää monia toimintoja jotka auttavat meitä etsimään merkkijonoa osuman.
Katsotaanpa tämän moduulin tarjoamia erilaisia toimintoja, jotka toimivat Pythonin regexin kanssa.
| Toiminto | Kuvaus |
|---|---|
| re.findall() | etsii ja palauttaa kaikki vastaavat esiintymät luettelosta |
| re.compile() | Säännölliset lausekkeet käännetään kuvioobjekteiksi |
| re.split() | Jaa merkkijono merkin tai kuvion esiintymien mukaan. |
| re.sub() | Korvaa kaikki merkin tai kuvion esiintymät korvaavalla merkkijonolla. |
| re.escape() | Pakenee erikoishahmoa |
| re.search() | Hakee merkin tai kuvion ensimmäistä esiintymistä |
Katsotaanpa näiden RegEx-funktioiden toimintaa määritelmien ja esimerkkien kanssa:
1. re.findall()
Palauta kaikki ei-päällekkäiset kuvion osumat merkkijonoluettelona. Merkkijono skannataan vasemmalta oikealle, ja osumat palautetaan löydettyssä järjestyksessä.
Kaikkien kuvion esiintymien etsiminen
Tämä koodi käyttää säännöllistä lauseketta ( d+> ) löytääksesi kaikki yhden tai useamman numeron sekvenssit annetusta merkkijonosta. Se etsii numeerisia arvoja ja tallentaa ne luetteloon. Tässä esimerkissä se etsii ja tulostaa numerot 123456789 ja 987654321 syöttömerkkijonosta.
Python 3
import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)> |
>
>Lähtö
['123456789', '987654321']>
2. uudelleen.compile()
Säännölliset lausekkeet käännetään kuvioobjekteiksi, joilla on menetelmiä erilaisiin toimintoihin, kuten kaavaosumien etsimiseen tai merkkijonojen korvaamiseen.
Esimerkki 1:
Koodi käyttää säännöllistä lauseketta [a-e]> löytääksesi ja listataksesi kaikki pienet kirjaimet 'a':sta 'e':hen syöttömerkkijonosta Kyllä, sanoi herra Gibenson Stark. Tulos tulee olemaan ['e', 'a', 'd', 'b', 'e']> , jotka ovat vastaavia merkkejä.
Python
import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))> |
>
>Lähtö
['e', 'a', 'd', 'b', 'e', 'a']>
Tuloksen ymmärtäminen:
- Ensimmäinen esiintyminen on 'e' Ayessa eikä 'A', koska kirjainkoolla on merkitystä.
- Seuraava esiintyminen on 'a' sanotussa, sitten 'd' sanotussa, jota seuraa 'b' ja 'e' Gibensonissa, viimeinen 'a' osuu Starkin kanssa.
- Metamerkkien kenoviiva '' on erittäin tärkeä rooli, koska se signaloi erilaisia sarjoja. Jos kenoviivaa käytetään ilman sen erityistä merkitystä metamerkkinä, käytä ''
Esimerkki 2: Aseta luokka [s,.] vastaa mitä tahansa välilyöntiä, ',' tai '.' .
Koodi käyttää säännöllisiä lausekkeita löytääkseen ja listatakseen kaikki yksittäiset numerot ja numerosarjat annetuissa syötemerkkijonoissa. Se löytää yksittäisiä numeroita kanssa d> ja numerosarjat d+> .
Python
java listnode
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'>))> |
>
>Lähtö
['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>
Esimerkki 3:
Koodi käyttää säännöllisiä lausekkeita sanamerkkien, sanamerkkijonojen ja ei-sanamerkkien etsimiseen ja luetteloimiseen syötemerkkijonoissa. Se tarjoaa luetteloita vastaavista merkeistä tai sarjoista.
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.'>))> |
>
>Lähtö
['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'] [' ', ' ', '*', '*', '*', ' ...>
Esimerkki 4:
Koodi käyttää säännöllistä lauseketta 'ab*' löytääkseen ja listatakseen kaikki 'ab':n esiintymät, joita seuraa nolla tai useampi 'b'-merkki syötemerkkijonossa abbabbaabbb. Se palauttaa seuraavan luettelon osumista: ['ab', 'abb', 'abbb'].
Python
import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))> |
>
onnea
>Lähtö
['ab', 'abb', 'a', 'abbb']>
Tulostuksen ymmärtäminen:
- RE on ab*, jonka 'a' mukana on mikä tahansa no. b:stä alkaen 0:sta.
- Tulos 'ab' on voimassa yhden 'a':n ja yhden 'b':n vuoksi.
- Tulos 'abb' on voimassa yhden 'a':n ja 2:n 'b' kanssa.
- Tulos 'a' on kelvollinen, koska yksittäinen 'a' ja 0 'b'.
- Tulostus 'abbb' on kelvollinen, koska yksittäinen 'a' ja 3 'b' ovat voimassa.
3. re.split()
Jaa merkkijono merkin tai kuvion esiintymien mukaan. Kun tämä kuvio löytyy, merkkijonon loput merkit palautetaan osana tuloksena olevaa luetteloa.
Syntaksi :
re.split(pattern, string, maxsplit=0, flags=0)>
Ensimmäinen parametri, pattern ilmaisee säännöllisen lausekkeen, merkkijono on annettu merkkijono, josta mallia etsitään ja jossa jako tapahtuu, maxsplit jos sitä ei ole annettu, katsotaan nollaksi '0' ja jos jokin muu kuin nolla arvo annetaan, niin korkeintaan niin monta jakautumista tapahtuu. Jos maxsplit = 1, merkkijono jaetaan vain kerran, jolloin saadaan luettelo, jonka pituus on 2. Liput ovat erittäin hyödyllisiä ja voivat auttaa lyhentämään koodia, ne eivät ole välttämättömiä parametreja, esim.: flags = re.IGNORECASE, tässä jaossa , kirjainkoko eli pienet tai isot kirjaimet ohitetaan.
Esimerkki 1:
Jakaa merkkijonon käyttämällä muita kuin sanamerkkejä ja välilyöntejä erottimina, palauttaen sanoja: ['Words', 'words', 'Words']> . Pitää heittomerkkejä ei-sanamerkkeinä: ['Word', 's', 'words', 'Words']> . Jako käyttämällä muita kuin sanamerkkejä ja numeroita: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Jakaa käyttämällä numeroita erottimena: ['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'>))> |
>
>Lähtö
['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>
Esimerkki 2:
Ensimmäinen lauseke jakaa merkkijonon, kun yksi tai useampi numero esiintyy ensimmäisen kerran: ['On ', 'th Jan 2016, at 11:02 AM']> . second jakaa merkkijonon käyttämällä pieniä kirjaimia a - f erottimina, kirjainkoolla ei eroa: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Kolmas jakaa merkkijonon käyttämällä pieniä kirjaimia a - f erottimina, kirjainkoolla: ['', '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'>))> |
>
>Lähtö
['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()
Funktiossa oleva 'sub' tarkoittaa SubStringia, tietyn säännöllisen lausekkeen mallia etsitään annetusta merkkijonosta (3. parametri), ja löydettyään osamerkkijonokavio korvataan repl (2. parametri), count tarkistaa ja ylläpitää monta kertaa tämä tapahtuu.
Syntaksi:
re.sub(pattern, repl, string, count=0, flags=0)>
Esimerkki 1:
- Ensimmäinen lauseke korvaa kaikki 'ub':n esiintymät '~*':lla (kirjainkoolla ei ole merkitystä):
'S~*ject has ~*er booked already'>. - Toinen lauseke korvaa kaikki 'ub':n esiintymät '~*':lla (kirjainkoolla on merkitystä):
'S~*ject has Uber booked already'>. - Kolmas lause korvaa ensimmäisen esiintymän 'ub':lla '~*' (kirjainkoolla ei väliä):
'S~*ject has Uber booked already'>. - Neljäs korvaa 'AND' sanalla '&' (kirjainkoolla ei väliä):
'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))> |
>
>Lähtö
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() on samanlainen kuin sub() kaikilta osin, paitsi tavassaan tuottaa tulosta. Se palauttaa monikon, jossa on korvausten kokonaismäärä ja uusi merkkijono pelkän merkkijonon sijaan.
Syntaksi:
re.subn(pattern, repl, string, count=0, flags=0)>
Esimerkki:
re.subn()> korvaa kaikki kuvion esiintymät merkkijonossa ja palauttaa monikon muokatulla merkkijonolla ja tehtyjen korvausten lukumäärällä. Se on hyödyllinen sekä kirjainkoon erottelussa että kirjainkoolla välittömässä korvauksessa.
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>])> |
>
>Lähtö
('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already> 6. re.escape()
Palauttaa merkkijonon, jossa on kaikki ei-aakkosnumeeriset kenoviivat. Tämä on hyödyllistä, jos haluat yhdistää mielivaltaisen kirjaimellisen merkkijonon, jossa voi olla säännöllisen lausekkeen metamerkkejä.
Syntaksi:
re.escape(string)>
Esimerkki:
re.escape()> käytetään välttämään merkkijonon erikoismerkkejä, mikä tekee siitä turvallisen käyttää mallina säännöllisissä lausekkeissa. Se varmistaa, että kaikkia merkkejä, joilla on erityismerkityksiä säännöllisissä lausekkeissa, käsitellään kirjaimellisina merkeinä.
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'>))> |
>
>Lähtö
This is Awesome even 1 AM I Asked what is this [a-9], he said ^WoW>
7. re.search()
Tämä menetelmä joko palauttaa None (jos kuvio ei täsmää) tai re.MatchObject sisältää tietoja vastaavasta merkkijonon osasta. Tämä menetelmä pysähtyy ensimmäisen osuman jälkeen, joten se sopii paremmin säännöllisen lausekkeen testaamiseen kuin tietojen poimimiseen.
Esimerkki: Haetaan kuvion esiintymistä
Tämä koodi käyttää säännöllistä lauseketta kuvion etsimiseen annetusta merkkijonosta. Jos osuma löytyy, se poimii ja tulostaa vastaavat osat merkkijonosta.
Tässä esimerkissä se etsii kuviota, joka koostuu kuukaudesta (kirjaimista), jota seuraa päivä (numerot) syötemerkkijonossa Synnyin 24. kesäkuuta. Jos osuma löytyy, se tulostaa koko vastaavuuden, kuukauden , ja päivä.
Python 3
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.'>)> |
>
>Lähtö
Match at index 14, 21 Full match: June 24 Month: June Day: 24>
ASETUKSET
A Aseta on joukko merkkejä, jotka on suljettu suluissa []. Sarjoja käytetään vastaamaan yhtä merkkiä hakasulkeissa määritetyssä merkkijoukossa. Alla on lista sarjoista:
| Aseta | Kuvaus |
|---|---|
| {n,} | Määrittää edeltävän merkin tai ryhmän ja vastaa vähintään n esiintymää. |
| * | Määrittää edellisen merkin tai ryhmän ja vastaa nollaa tai useampaa esiintymää. |
| [0123] | Vastaa määritettyjä numeroita (0, 1, 2 tai 3) |
| [^arn] | vastaa mitä tahansa merkkiä PAITSI a, r ja n |
| d | Vastaa mitä tahansa numeroa (0-9). |
| [0-5][0-9] | vastaa mitä tahansa kaksinumeroisia lukuja väliltä 00 ja 59 |
| Sisään | Vastaa mitä tahansa aakkosnumeerista merkkiä (a-z, A-Z, 0-9 tai _). |
| [a-n] | Täyttää mitä tahansa pieniä aakkosia välillä a ja n. |
| D | Vastaa mitä tahansa ei-numeroista merkkiä. |
| [arn] | vastaa, jos jokin määritetyistä merkeistä (a, r tai n) on läsnä |
| [a-zA-Z] | vastaa mitä tahansa merkkiä a:n ja z:n välillä, pieniä TAI isoja kirjaimia |
| [0-9] | vastaa mitä tahansa numeroa välillä 0 ja 9 |
Match Object
Match-objekti sisältää kaikki tiedot hausta ja tuloksesta, ja jos hakua ei löydy, palautetaan None. Katsotaanpa joitain hakuobjektin yleisesti käytettyjä menetelmiä ja määritteitä.
1. Merkkijonon ja säännöllisen lausekkeen hankkiminen
match.re attribuutti palauttaa välitetyn säännöllisen lausekkeen ja match.string attribuutti palauttaa välitetyn merkkijonon.
Esimerkki: Haetaan vastaavan objektin merkkijono ja säännöllinen lauseke
Koodi etsii kirjainta G merkkijonon sanarajalla Tervetuloa GeeksForGeeksiin ja tulostaa säännöllisen lausekkeen kuvion ( res.re> ) ja alkuperäinen merkkijono ( res.string> ) .
Python 3
Greatandhra
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)> |
>
>Lähtö
re.compile('G') Welcome to GeeksForGeeks> 2. Haetaan vastaavan objektin indeksi
- start()-menetelmä palauttaa vastaavan osamerkkijonon aloitusindeksin
- end()-metodi palauttaa vastaavan osamerkkijonon loppuindeksin
- span()-menetelmä palauttaa monikon, joka sisältää sovitetun osamerkkijonon aloitus- ja loppuindeksin
Esimerkki: Haetaan vastaavan objektin hakemistoa
Koodi etsii alimerkkijonoa Gee merkkijonon sanarajalta Tervetuloa GeeksForGeeksiin ja tulostaa haun aloitusindeksin (res.start()>), ottelun loppuindeksi (res.end()>), ja ottelun kesto (res.span()>).
Python 3
import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())> |
>
>Lähtö
11 14 (11, 14)>
3. Vastaavan alimerkkijonon saaminen
group()-metodi palauttaa sen merkkijonon osan, jolle mallit vastaavat. Katso alla oleva esimerkki ymmärtääksesi paremmin.
Esimerkki: Haetaan osumaa alimerkkijonoa
Koodi etsii kahden ei-numeroisen merkin sarjaa, joita seuraa välilyönti ja t-kirjain merkkijonosta Tervetuloa GeeksForGeeksiin ja tulostaa vastaavan tekstin käyttämällä res.group()> .
Python 3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())> |
>
>Lähtö
me t>
Yllä olevassa esimerkissä mallimme määrittää merkkijonolle, joka sisältää vähintään 2 merkkiä, joita seuraa välilyönti, ja välilyöntiä seuraa t.
Aiheeseen liittyvä artikkeli:
Viite:
https://docs.python.org/2/library/re.html
Olemme keskustelleet RegExistä Pythonissa, käyneet läpi metamerkit, funktiot ja erikoissekvenssit RegEx Pythonissa.
Säännöllinen lauseke on erittäin tärkeä käsite Pythonissa, olemme yrittäneet selittää sen helposti. Toivottavasti se auttaa Python-matkallasi!!