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.
\dVastaa numeroa. Vastaa ilmaisua
[0-9].\DVastaa muuta kuin numeroa. Vastaa ilmaisua
[^0-9].\sVastaa tyhjämerkkiä. Vastaa ilmaisua
[ \t-\r].\SVastaa muuta kuin tyhjämerkkiä. Vastaa ilmaisua
[^ \t-\r].\wVastaa ”sanamerkkejä” (vain ASCII). Vastaa ilmaisua
[A-Za-z0-9_].\WVastaa 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,\njne. eivät saa erityiskäsittelyä, ja ne vastaavat kirjaimellisia kirjaimiar,njne. Tämän vuoksi raakojen Python-merkkijonojen (r"") käyttöä säännöllisissä lausekkeissa ei suositella. Esimerkiksir"\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 ohjaustajne.
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 taiNone, jos lauseke ei vastaa. Tämä on käännetyn kuvion vastine moduulitason luokallematch, 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 - 1haetaan. Jos endpos onNone(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 taiNone, jos mikään sijainti ei vastaa. Tämä on käännetyn kuvion vastine moduulitason funktiollesearch(), 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 - 1haetaan. Jos endpos onNone(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.
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 ilmaisuare.compile(regex_str).match(string).Saman osumaobjektin palauttaa myös
search(), käännetyn kuvionregex.match()/regex.search()-metodit, ja se välitetään korvausfunktiolle, jotasub()käyttää.