Флагови за низове регуларних израза у Python-у

Да би се флагови задали као један од опционалних параметара за методе које раде са регуларним изразима, користи се следећа синтакса:

pythonflags=re.име флага

Основни флагови за рад са регуларним изразима

Флаг Намена
re.IGNORECASE Игнорисање регистра писања симбола.
re.DOTALL Тачка означава било који симбол, укључујући и прелазак у нови ред.
re.I Чини претрагу неосетљивом на регистар.
re.L Тражи речи у складу са тренутним језиком. Ова интерпретација утиче на алфабетску групу (\w и \W), као и на понашање границе речи (\b и \B).
re.M Симбол $ обавља претрагу на крају било ког реда текста (не само крају текста) и симбол ^ обавља претрагу на почетку било ког реда текста (не само на почетку текста).
re.S Мења вредност тачке (.) на подударање са било којим симболом, укључујући нови ред.
re.U Тумари слова у складу са скупом симбола Unicode. Овај флаг утиче на понашање \w, \W, \b, \B. У Python-у 3+ овај флаг је подразумевано постављен.
re.X Омогућава вишередну синтаксу регуларног израза. Игнорише размаке унутар шаблона (осим размака унутар скупа [] или када су екранирани обрнутом косом цртом) и третира неекранирани '#' као коментар.

Пример

Помоћу флага re.IGNORECASE може се игнорисати регистар симбола. Хајде да погледамо како се то ради. У овом примеру регуларни израз ће пронаћи само мала слова:

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

print(res)

Резултат извршавања кода:

python'! ! CCC DDD'

Пример

А сада ћемо додати у четврти параметар метода флаг re.IGNORECASE и регуларни израз ће почети да тражи симболе у свим регистрима:

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

print(res)

Резултат извршавања кода:

python'! ! ! !'

Пример

Хајде да нађемо регуларним изразом све преласке у нови ред:

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

print(res)

Резултат извршеног кода:

python'aaa!bbb'

Пример

Али, ако треба заменити уопште све симболе, онда постављањем тачке у регуларном изразу, неће се захватити преласци у нови ред:

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

print(res)

Резултат извршеног кода:

python'!!!
!!!'

Пример

Да би се исправила ова грешка, треба применити флаг re.DOTALL:

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

Резултат извршеног кода:

python'!!!!!!!'

Пример

У параметар се може проследити и више флагова, стављајући између њих оператор +. Хајде прво да заменимо слово 'a' на крају реда:

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

print(res)

Резултат извршеног кода:

python'''
  aaa
  AAA
  !
'''

Пример

Сада ћемо поставити флаг re.M:

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

Резултат извршеног кода:

python'''
  !
  AAA
  !
'''

Пример

Хајде сада да применимо и флаг за игнорисање регистра:

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

Резултат извршеног кода:

python'''
  !
  !
  !
'''