re — yksinkertaiset säännölliset lausekkeet

Tämä moduuli toteuttaa säännöllisten lausekkeiden toiminnot. Tuettu säännöllisten lausekkeiden syntaksi on osajoukko CPythonin re-moduulista (ja itse asiassa osajoukko POSIX-laajennetuista säännöllisistä lausekkeista).

Tuetut operaattorit ja erikoissekvenssit ovat:

.

Vastaa mitä tahansa merkkiä.

[...]

Vastaa merkkijoukkoa. Yksittäisiä merkkejä ja merkkivälejä tuetaan, mukaan lukien negatoidut joukot (esim. [^a-c]).

^

Vastaa merkkijonon alkua.

$

Vastaa merkkijonon loppua.

?

Vastaa edellistä alikuviota nolla tai yhden kerran.

*

Vastaa edellistä alikuviota nolla tai useamman kerran.

+

Vastaa edellistä alikuviota yhden tai useamman kerran.

??

Ahnehtimaton versio operaattorista ?, vastaa nolla tai yhden kerran suosien nollaa.

*?

Ahnehtimaton versio operaattorista *, vastaa nolla tai useamman kerran suosien lyhintä osumaa.

+?

Ahnehtimaton versio operaattorista +, vastaa yhden tai useamman kerran suosien lyhintä osumaa.

|

Vastaa joko tämän operaattorin vasemman- tai oikeanpuoleista alikuviota.

(...)

Ryhmittely. Jokainen ryhmä on kaappaava (sen kaappaamaan osamerkkijonoon pääsee käsiksi match.group()-metodilla).

(?:...)

Kaappaamaton ryhmittely. Jokainen ryhmä sovitetaan samoilla säännöillä kuin tavallinen ryhmittely, mutta se ei ole osa osumaobjektia.

\d

Vastaa numeroa. Vastaa ilmaisua [0-9].

\D

Vastaa muuta kuin numeroa. Vastaa ilmaisua [^0-9].

\s

Vastaa tyhjämerkkiä. Vastaa ilmaisua [ \t-\r].

\S

Vastaa muuta kuin tyhjämerkkiä. Vastaa ilmaisua [^ \t-\r].

\w

Vastaa ”sanamerkkejä” (vain ASCII). Vastaa ilmaisua [A-Za-z0-9_].

\W

Vastaa muita kuin ”sanamerkkejä” (vain ASCII). Vastaa ilmaisua [^A-Za-z0-9_].

\

Ohjausmerkki (escape). Mikä tahansa muu kenoviivaa seuraava merkki, lukuun ottamatta edellä lueteltuja, otetaan kirjaimellisesti. Esimerkiksi \* vastaa kirjaimellista merkkiä * (sitä ei käsitellä *-operaattorina). Huomaa, että \r, \n jne. eivät saa erityiskäsittelyä, ja ne vastaavat kirjaimellisia kirjaimia r, n jne. Tämän vuoksi raakojen Python-merkkijonojen (r"") käyttöä säännöllisissä lausekkeissa ei suositella. Esimerkiksi r"\r\n" säännöllisenä lausekkeena käytettynä vastaa ilmaisua "rn". Vastataksesi CR-merkkiä, jota seuraa LF, käytä "\r\n".

EI TUETTU:

  • lukumäärälliset toistot ({m,n})

  • nimetyt ryhmät ((?P<name>...))

  • edistyneemmät väittämät (\b, \B)

  • erikoismerkkien ohjaukset, kuten \r, \n - käytä sen sijaan Pythonin omaa ohjausta

  • jne.

Esimerkki:

import re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

Funktiot

re.compile(regex_str: str, flags: int = 0) 'regex'

Kääntää säännöllisen lausekkeen ja palauttaa regex-objektin.

re.search(regex_str: str, string: str) 'match | None'

Kääntää regex_str -lausekkeen ja etsii sitä string -merkkijonosta. Toisin kuin match, tämä etsii merkkijonosta ensimmäisen sijainnin, joka vastaa säännöllistä lauseketta (joka voi silti olla 0, jos lauseke on ankkuroitu).

re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Kääntää regex_str -lausekkeen ja etsii sitä string -merkkijonosta, korvaa kaikki osumat replace -arvolla ja palauttaa uuden merkkijonon.

replace voi olla merkkijono tai funktio. Jos se on merkkijono, voidaan käyttää muotoa \<number> ja \g<number> olevia ohjaussekvenssejä laajentamaan vastaavaan ryhmään (tai tyhjään merkkijonoon, jos ryhmälle ei löydy osumaa). Jos replace on funktio, sen on otettava yksi argumentti (osuma) ja palautettava korvaava merkkijono.

Jos count on määritetty ja nollasta poikkeava, korvaaminen lopetetaan tämän monen korvauksen jälkeen. flags -argumentti jätetään huomiotta.

Regex-objektit

Käännetty säännöllinen lauseke. Tämän luokan ilmentymät luodaan käyttäen re.compile().

class re.regex

Käännetty säännöllisen lausekkeen objekti, jonka re.compile() palauttaa.

match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Soveltaa tätä käännettyä säännöllistä lauseketta string -merkkijonoon, ankkuroituna hakualueen alkuun, ja palauttaa match-objektin tai None, jos lauseke ei vastaa. Tämä on käännetyn kuvion vastine moduulitason luokalle match, ja se on paljon tehokkaampi, kun samaa kuviota sovelletaan useisiin merkkijonoihin.

Valinnainen parametri pos antaa indeksin string -merkkijonossa, josta haku aloitetaan; oletuksena se on 0. Tämä ei ole täysin sama kuin merkkijonon viipalointi; '^'-kuviomerkki vastaa merkkijonon todellista alkua ja juuri rivinvaihdon jälkeisiä sijainteja, mutta ei välttämättä indeksiä, josta haku aloitetaan.

Valinnainen parametri endpos rajoittaa, kuinka pitkälle string -merkkijonoa haetaan; tilanne on kuin merkkijono olisi endpos merkkiä pitkä, joten vain merkit kohdasta pos kohtaan endpos - 1 haetaan. Jos endpos on None (oletus), haetaan koko merkkijono.

search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Käy läpi string -merkkijonon etsien ensimmäistä sijaintia, jossa tämä käännetty säännöllinen lauseke tuottaa osuman, ja palauttaa match-objektin tai None, jos mikään sijainti ei vastaa. Tämä on käännetyn kuvion vastine moduulitason funktiolle search(), ja se on paljon tehokkaampi, kun samaa kuviota sovelletaan useisiin merkkijonoihin.

Valinnainen parametri pos antaa indeksin string -merkkijonossa, josta haku aloitetaan; oletuksena se on 0. Tämä ei ole täysin sama kuin merkkijonon viipalointi; '^'-kuviomerkki vastaa merkkijonon todellista alkua ja juuri rivinvaihdon jälkeisiä sijainteja, mutta ei välttämättä indeksiä, josta haku aloitetaan.

Valinnainen parametri endpos rajoittaa, kuinka pitkälle string -merkkijonoa haetaan; tilanne on kuin merkkijono olisi endpos merkkiä pitkä, joten vain merkit kohdasta pos kohtaan endpos - 1 haetaan. Jos endpos on None (oletus), haetaan koko merkkijono.

sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Etsii tätä käännettyä säännöllistä lauseketta string -merkkijonosta, korvaa kaikki osumat replace -arvolla ja palauttaa uuden merkkijonon. Tämä on käännetyn kuvion vastine moduulitason funktiolle sub(), ja se on paljon tehokkaampi, kun samaa kuviota sovelletaan useisiin merkkijonoihin.

replace voi olla merkkijono tai funktio. Jos se on merkkijono, voidaan käyttää muotoa \<number> ja \g<number> olevia ohjaussekvenssejä laajentamaan vastaavaan ryhmään (tai tyhjään merkkijonoon, jos ryhmälle ei löydy osumaa). Jos replace on funktio, sen on otettava yksi argumentti (osuma) ja palautettava korvaava merkkijono.

Jos count on määritetty ja nollasta poikkeava, korvaaminen lopetetaan tämän monen korvauksen jälkeen. flags -argumentti jätetään huomiotta.

split(string: str, max_split: int = -1, /) List[str]

Jakaa string -merkkijonon säännöllisen lausekkeen avulla. Jos max_split on annettu, se määrittää suoritettavien jakojen enimmäismäärän. Palauttaa merkkijonojen listan (siinä voi olla enintään max_split+1 alkiota, jos se on määritetty).

Osumaobjektit

Osumaobjekti sisältää onnistuneen osuman tuloksen.

class re.match(regex_str: str, string: str)

Sovittaa regex_str -lausekkeen string -merkkijonoa vasten, ankkuroituna merkkijonon alkuun, ja palauttaa osumaobjektin tai None, jos se ei vastaa. Tämä on moduulitason pikakomento: re.match(regex_str, string) vastaa ilmaisua re.compile(regex_str).match(string).

Saman osumaobjektin palauttaa myös search(), käännetyn kuvion regex.match() / regex.search() -metodit, ja se välitetään korvausfunktiolle, jota sub() käyttää.

group(index: int) str

Palauttaa osuvan (osa)merkkijonon. index on 0 koko osumalle, 1 ja siitä ylöspäin kullekin kaappaavalle ryhmälle. Vain numeerisia ryhmiä tuetaan.