Zastavice za stringove regularnih izraza u Pythonu

Da biste postavili zastavice kao jedan od opcionih parametara za metode koje rade sa regularnim izrazima, koristi se sledeća sintaksa:

pythonflags=re.ime zastavice

Glavne zastavice za rad sa regularnim izrazima

Zastavica Namena
re.IGNORECASE Zanemarivanje veličine slova pri pisanju simbola.
re.DOTALL Tačka označava bilo koji simbol, uključujući i prelazak u novi red.
re.I Čini pretragu neosetljivom na veličinu slova.
re.L Traži reči u skladu sa trenutnim jezikom. Ovo tumačenje utiče na alfabetsku grupu (\w i \W), kao i na ponašanje granice reči (\b i \B).
re.M Simbol $ vrši pretragu na kraju bilo koje linije teksta (ne samo kraja teksta) i simbol ^ vrši pretragu na početku bilo koje linije teksta (ne samo na početku teksta).
re.S Menja značenje tačke (.) na podudaranje sa bilo kojim simbolom, uključujući novi red.
re.U Tumači slova u skladu sa setom simbola Unicode. Ova zastavica utiče na ponašanje \w, \W, \b, \B. U Python-u 3+ ova zastavica je podešena po podrazumevanim vrednostima.
re.X Dozvoljava višelinijsku sintaksu regularnog izraza. Zanemaruje razmake unutar šablona (izuzev razmaka unutar seta [] ili pri ekranizaciji obrnutom kosom crtom) i tretira neekranizirani '#' kao komentar.

Primer

Pomoću zastavice re.IGNORECASE možemo zanemariti veličinu slova. Hajde da pogledamo kako se to radi. U ovom primeru regularni izraz će naći samo mala slova:

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

print(res)

Rezultat izvršavanja koda:

python'! ! CCC DDD'

Primer

A sada da dodamo u četvrti parametar metoda zastavicu re.IGNORECASE i regularni izraz će početi da traži simbole u svim veličinama slova:

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

print(res)

Rezultat izvršavanja koda:

python'! ! ! !'

Primer

Hajde da pronađemo regularnim izrazom sve prelaze u novi red:

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

print(res)

Rezultat izvršenog koda:

python'aaa!bbb'

Primer

Ali, ako treba zameniti uopšte sve simbole, onda stavljajući u regularnom izrazu tačku, neće se uhvatiti prelasci u novi red:

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

print(res)

Rezultat izvršenog koda:

python'!!!
!!!'

Primer

Da bismo ispravili ovu grešku, treba primeniti zastavicu re.DOTALL:

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

Rezultat izvršenog koda:

python'!!!!!!!'

Primer

U parametru se može proslediti i nekoliko zastavica, stavivši između njih operator +. Hajde prvo da zamenimo slovo 'a' na kraju linije:

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

print(res)

Rezultat izvršenog koda:

python'''
  aaa
  AAA
  !
'''

Primer

Sada da postavimo zastavicu re.M:

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

Rezultat izvršenog koda:

python'''
  !
  AAA
  !
'''

Primer

Hajde sada da primenimo i zastavicu za zanemarivanje veličine slova:

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

Rezultat izvršenog koda:

python'''
  !
  !
  !
'''