Python-da regulýar ifadeler üçin baýraklar
Regulýar ifadeler bilen işleýän metotlar üçin isledýän parametrlerden biri hökmünde baýraklary belleýärkä aşakdaky sintaksis ulanylýar:
flags=re.baýrak ady
Regulýar ifadeler bilen işlemek üçin esasy baýraklar
| Baýrak | Maksat |
|---|---|
re.IGNORECASE |
Simwollaryň ýazylýş registrini näzara almazlyk. |
re.DOTALL |
Nokat, setir göçürmegi hem öz içine alýan islendik simwol diýmekdir. |
re.I |
Gözlegi registre duýgur däl edýär. |
re.L |
Sözleri häzirki dile laýyklykda gözleýär. Bu düşündiriş alfabit toparyna (\w we \W), şeýle hem söz araçäginiň hereketine (\b we \B) täsir edýär.
|
re.M |
$ simwoly tekstüň islendik setiriniň soňunda (diňe tekstüň soňunda däl) gözleg ýerine ýetirýär we ^ simwoly tekstüň islendik setiriniň başynda (diňe tekstüň başynda däl) gözleg ýerine ýetirýär.
|
re.S |
Nokat (.) bahasyny täze setir hem öz içine alýan islendik simwol bilen gabat gelmäge üýtgedýär.
|
re.U |
Harfleri Unicode simwol toplumy boýunça düşündirýär. Bu baýrak \w, \W, \b, \B hereketine täsir edýär. Python 3+ bu baýrak deslapda gurnalan.
|
re.X |
Regulýar ifadäniň köp setirli sintaksisini rugsat berýär. Ol nusganyň içindäki boşluklara ([] toplumynyň içindäki boşluklar ýa-da yzky çyzyk bilen ekranlaşdyrylan boşluklar çäklendirme bilen) ähmiýet bermez we ekranlaşdyrylmadyk '#' teswirlendirme hökmünde işleýär.
|
Mysal
re.IGNORECASE baýragy bilen simwollaryň registrine ähmiýet bermezlik bolup biler. Geliň munuň nädip edilýändigine göz aýlalyň. Bu mysalda regulýar ifade diňe kiçi harplary tapar:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Kodyň ýerine ýetiriliş netijesi:
'! ! CCC DDD'
Mysal
Indi metoduň dördünji parametrine re.IGNORECASE baýragyny goşalyň we regulýar ifade simwollary ähli registrlerde gözlemegi başlar:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Kodyň ýerine ýetiriliş netijesi:
'! ! ! !'
Mysal
Geliň regulýar ifade bilen ähli setir göçürmelerini tapalyň:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Ýerine ýetirilen kodyň netijesi:
'aaa!bbb'
Mysal
Emma, eger islendik simwoly çalşyrmak gerek bolsa, regulýar ifadede nokat goýlanda, setir göçürmeleri çalynmaz:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Ýerine ýetirilen kodyň netijesi:
'!!!
!!!'
Mysal
Bu ýalňyşlygy düzetmek üçin re.DOTALL baýragy ulanylmaly:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Ýerine ýetirilen kodyň netijesi:
'!!!!!!!'
Mysal
Parametre birnäçe baýrak hem geçirip bolýar, olaryň arasyna + operatoryny goýup. Geliň ilki bilen setiriň soňundaky 'a' harpy çalşyralyň:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa
, '!', txt)
print(res)
Ýerine ýetirilen kodyň netijesi:
'''
aaa
AAA
!
'''
Mysal
Indi re.M baýragyny goýalyň:
res = re.sub('aaa
, '!', txt, flags=re.M)
print(res)
Ýerine ýetirilen kodyň netijesi:
'''
!
AAA
!
'''
Mysal
Geliň indi hem registre ähmiýet bermezlik baýragyny ulanaylyň:
res = re.sub('aaa
, '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Ýerine ýetirilen kodyň netijesi:
'''
!
!
!
'''