⊗pyPmRESF 73 of 129 menu

Python reguliariųjų išraiškų eilučių vėliavos

Norint nustatyti vėliavas kaip vieną iš neprivalomų parametrų metodams, dirbantiems su reguliariosiomis išraiškomis, naudojamas toks sintaksis:

flags=re.vėliavos_pavadinimas

Pagrindinės vėliavos dirbant su reguliariosiomis išraiškomis

Vėliava Paskirtis
re.IGNORECASE Ignoruojami simbolių rašymo registro skirtumai.
re.DOTALL Taškas žymi bet kurį simbolį, įskaitant ir eilutės lūžį.
re.I Paieška tampa nejautri registrui.
re.L Ieško žodžių pagal dabartinę kalbą. Ši interpretacija liečia abėcėlinę grupę (\w ir \W), taip pat žodžio ribos elgesį (\b ir \B).
re.M Simbolis $ atlieka paiešką bet kurios teksto eilutės pabaigoje (ne tik teksto pabaigoje) o simbolis ^ atlieka paiešką bet kurios teksto eilutės pradžioje (ne tik teksto pradžioje).
re.S Pakeičia taško (.) reikšmę į atitikimą su bet kuriuo simboliu, įskaitant naują eilutę.
re.U Interpretuoja raides pagal Unicode simbolių rinkinį. Ši vėliava daro įtaką \w, \W, \b, \B elgesiui. Python 3+ ši vėliava nustatyta pagal nutylėjimą.
re.X Leidžia daugiaeilį reguliariosios išraiškos sintaksę. Jis ignoruoja tarpus šablono viduje (išskyrus tarpus aibės viduje [] arba kai ekranuojami atgaliniu pasviruoju brūkšniu) ir ne ekranuotą '#' traktuoja kaip komentarą.

Pavyzdys

Naudojant vėliavą re.IGNORECASE galima ignoruoti simbolių registrą. Pažiūrėkime, kaip tai daroma. Šiame pavyzdyje reguliarioji išraiška ras tik mažąsias raides:

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

Kodo vykdymo rezultatas:

'! ! CCC DDD'

Pavyzdys

Dabar pridėkime į ketvirtą metodo parametrą vėliavą re.IGNORECASE ir reguliarioji išraiška pradės ieškoti simbolių visuose registruose:

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

Kodo vykdymo rezultatas:

'! ! ! !'

Pavyzdys

Suraskime reguliariąja išraiška visus eilučių lūžius:

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

Vykdyto kodo rezultatas:

'aaa!bbb'

Pavyzdys

Bet, jei reikia pakeisti visus simbolius, tada, sudėjus tašką reguliariojoje išraiškoje, nebus perimti eilučių lūžiai:

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

Vykdyto kodo rezultatas:

'!!! !!!'

Pavyzdys

Norint ištaisyti šią klaidą, reikia taikyti vėliavą re.DOTALL:

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

Vykdyto kodo rezultatas:

'!!!!!!!'

Pavyzdys

Parametre galima perduoti ir kelias vėliavas, sudėjus tarp jų operatorių +. Pirmiausia pakeiskime raidę 'a' eilutės pabaigoje:

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

Vykdyto kodo rezultatas:

''' aaa AAA ! '''

Pavyzdys

Dabar nustatykime vėliavą re.M:

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

Vykdyto kodo rezultatas:

''' ! AAA ! '''

Pavyzdys

Dabar taikykime ir vėliavą registro ignoravimui:

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

Vykdyto kodo rezultatas:

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