⊗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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць