Regulaaravaldiste lipud Pythonis

Flag'ide määramiseks ühe mittekohustusliku parameetrina meetoditele, mis töötavad regulaaravaldistega, kasutatakse järgmist süntaksit:

pythonflags=re.lipu_nimi

Peamised lipud regulaaravaldistega töötamiseks

Lipp Eesmärk
re.IGNORECASE Tähemärkide kirjatüübi (suur- ja väiketähed) ignoreerimine.
re.DOTALL Punkt tähistab suvalist märki, kaasa arvatud reavahetusmärki.
re.I Teeb otsingu mitterahustuvaks kirjatüübile.
re.L Otsib sõnu vastavalt keelele. See tõlgendus mõjutab tähestikulist rühma (\w ja \W), samuti sõnapiiri käitumist (\b ja \B).
re.M Märk $ sooritab otsingu mis tahes rea lõpus (mitte ainult teksti lõpus) ja märk ^ sooritab otsingu mis tahes rea alguses (mitte ainult teksti alguses).
re.S Muudab punkti (.) väärtuse sobivaks mis tahes märgiga, kaasa arvatud uue rea märgiga.
re.U Tõlgendab tähti vastavalt Unicode'i märgistikule. See lipp mõjutab \w, \W, \b, \B käitumist. Pythonis 3+ on see lipp vaikimisi seatud.
re.X Võimaldab mitmerealist regulaaravaldise süntaksit. See ignoreerib tühikuid mustri sees (välja arvatud tühikud komplekti [] sees või kui need on kaitstud kurakaldkriipsuga) ja käsitleb kaitstemata '#' märki kommentaarina.

Näide

Lippu re.IGNORECASE saab kasutada tähemärkide kirjatüübi ignoreerimiseks. Vaatame, kuidas seda tehakse. Selles näites leiab regulaaravaldis ainult väiketähed:

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

print(res)

Koodi täitmise tulemus:

python'! ! CCC DDD'

Näide

Nüüd lisame meetodi neljandale parameetrile lipu re.IGNORECASE ja regulaaravaldis hakkab otsima märke kõikides kirjatüüpides:

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

print(res)

Koodi täitmise tulemus:

python'! ! ! !'

Näide

Leiame regulaaravaldisega kõik reavahetused:

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

print(res)

Koodi täitmise tulemus:

python'aaa!bbb'

Näide

Kuid kui on vaja asendada kõik märgid, siis pannes regulaaravaldises punkti, ei haara see reavahetusi:

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

print(res)

Koodi täitmise tulemus:

python'!!!
!!!'

Näide

Vea parandamiseks tuleks rakendada lippu re.DOTALL:

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

Koodi täitmise tulemus:

python'!!!!!!!'

Näide

Parameetrisse saab edastada ka mitu lippu, pannes nende vahele operaatori +. Kõigepealt asendame rea lõpus oleva tähe 'a':

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

print(res)

Koodi täitmise tulemus:

python'''
  aaa
  AAA
  !
'''

Näide

Nüüd paneme lipu re.M:

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

Koodi täitmise tulemus:

python'''
  !
  AAA
  !
'''

Näide

Rakendame nüüd ka kirjatüübi ignoreerimise lipu:

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

Koodi täitmise tulemus:

python'''
  !
  !
  !
'''