⊗pyPmRESF 73 of 129 menu

Флагове за низове от регулярни изрази в Python

За да зададете флагове като един от незадължителните параметри за методите, които работят с регулярни изрази, се използва следния синтаксис:

flags=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 може да се игнорира регистърът на символите. Нека видим как се прави това. В този пример регулярният израз ще намери само малките букви:

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

Резултат от изпълнението на кода:

'! ! CCC DDD'

Пример

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

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

Резултат от изпълнението на кода:

'! ! ! !'

Пример

Нека намерим с регулярния израз всички нови редове:

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

Резултат от изпълнения код:

'aaa!bbb'

Пример

Но, ако трябва да се заменят всички символи, като поставим точка в регулярния израз, няма да се уловят новите редове:

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

Резултат от изпълнения код:

'!!! !!!'

Пример

За да се коригира тази грешка, трябва да се приложи флагът re.DOTALL:

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

Резултат от изпълнения код:

'!!!!!!!'

Пример

В параметъра могат да се подадат и няколко флага, като между тях се поставя операторът +. Нека първо заменим буквата 'a' в края на реда:

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

Резултат от изпълнения код:

''' aaa AAA ! '''

Пример

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

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

Резултат от изпълнения код:

''' ! AAA ! '''

Пример

Нека сега приложим и флаг за игнориране на регистъра:

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

Резултат от изпълнения код:

''' ! ! ! '''
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне