⊗pyPmRESF 73 of 129 menu

Säännöllisten lausekkeiden liput Pythonissa

Asettaaksesi liput yhdeksi valinnaisista parametreista menetelmiä varten, jotka toimivat säännöllisillä lausekkeilla, käytetään seuraavaa syntaksia:

flags=re.lippu_nimi

Tärkeimmät säännöllisten lausekkeiden liput

Lippu Tarkoitus
re.IGNORECASE Merkkien kirjainkoon unohtaminen.
re.DOTALL Piste tarkoittaa mitä tahansa merkkiä, mukaan lukien rivinvaihto.
re.I Tekee hausta kirjainkoon suhteen herkättömän.
re.L Etsii sanoja nykyisen kielen mukaisesti. Tämä tulkinta koskee aakkosryhmää (\w ja \W), sekä sananrajan käyttäytymistä (\b ja \B).
re.M Merkki $ suorittaa haun minkä tahansa tekstirivin lopussa (ei vain tekstin lopussa) ja merkki ^ suorittaa haun minkä tahansa tekstirivin alussa (ei vain tekstin alussa).
re.S Muuttaa pisteen (.) merkityksen vastaamaan mitä tahansa merkkiä, mukaan lukien uusi rivi.
re.U Tulkitsee kirjaimet Unicode-merkistön mukaisesti. Tämä lippu vaikuttaa käyttäytymiseen \w, \W, \b, \B. Pythonissa 3+ tämä lippu on oletusarvoisesti asennettuna.
re.X Sallii monirivisen säännöllisen lausekkeen syntaksin. Se unohtaa välilyönnit mallineen sisällä (lukuun ottamatta välilyöntejä joukon [] sisällä tai kun ne on suojattu kenoviivalla) ja käsittelee suojaamattoman '#' kommenttina.

Esimerkki

Lipulla re.IGNORECASE voidaan ohittaa merkkien kirjainkoko. Katsotaanpa, kuinka se tehdään. Tässä esimerkissä säännöllinen lauseke löytää vain pienaakkoset:

txt = 'aaa bbb CCC DDD' res = re.sub('[a-z]+', '!', txt) print(res)

Koodin suorituksen tulos:

'! ! CCC DDD'

Esimerkki

Lisätään nyt menetelmän neljänteen parametriin lippu re.IGNORECASE ja säännöllinen lauseke alkaa etsiä merkkejä kaikista kirjainkooista:

txt = 'aaa AAA bbb BBB' res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE) print(res)

Koodin suorituksen tulos:

'! ! ! !'

Esimerkki

Etsitään säännöllisellä lausekkeella kaikki rivinvaihdot:

txt = '''aaa bbb''' res = re.sub('\n', '!', txt) print(res)

Suoritetun koodin tulos:

'aaa!bbb'

Esimerkki

Mutta, jos täytyy korvata lähes kaikki merkit, niin asettamalla säännölliseen lausekkeeseen pisteen, rivinvaihdot eivät tule mukaan:

txt = '''aaa bbb''' res = re.sub('.', '!', txt) print(res)

Suoritetun koodin tulos:

'!!! !!!'

Esimerkki

Korjatakseen tämän virheen, tulee käyttää lippua re.DOTALL:

res = re.sub('.', '!', txt, flags=re.DOTALL) print(res)

Suoritetun koodin tulos:

'!!!!!!!'

Esimerkki

Parametriin voidaan välittää myös useita lippuja, laittamalla niiden väliin operaattori +. Korvataan ensin kirjain 'a' rivin lopussa:

txt = ''' aaa AAA aaa''' res = re.sub('aaa , '!', txt) print(res)

Suoritetun koodin tulos:

''' aaa AAA ! '''

Esimerkki

Asetetaan nyt lippu re.M:

res = re.sub('aaa , '!', txt, flags=re.M) print(res)

Suoritetun koodin tulos:

''' ! AAA ! '''

Esimerkki

Käytetään nyt myös lippua kirjainkoon unohtamiseen:

res = re.sub('aaa , '!', txt, flags=re.M+re.IGNORECASE) print(res)

Suoritetun koodin tulos:

''' ! ! ! '''
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää