Python-da Regulyar Ifadeler ucun Bayraqlar
Regulyar ifadelerle isleyen metodlar ucun mecburi olmayan parametrlerden biri kimi bayraqlari teyin etmek ucun asagidaki sintaksisdən istifade olunur:
flags=re.bayraq_adı
Regulyar ifadelerle iş üçün əsas bayraqlar
| Bayraq | Təyinat |
|---|---|
re.IGNORECASE |
Simvolların yazılma registrinin nəzərə alınmaması. |
re.DOTALL |
Nöqtə istənilən simvolu, o cümlədən sətir köçürməni də işarə edir. |
re.I |
Axtarışı registrə həssas etmir. |
re.L |
Sözləri cari dilə uyğun olaraq axtarır.
Bu şərh əlifba qrupuna (\w və \W), həmçinin
söz sərhədinin davranışına (\b və
\B) təsir göstərir.
|
re.M |
$ simvolu mətndən asılı olmayaraq
istənilən sətrin sonunda axtarış edir
(və ^ simvolu mətndən asılı olmayaraq
istənilən sətrin əvvəlində axtarış edir).
|
re.S |
Nöqtənin (.) qiymətini dəyişir,
belə ki, o, yeni sətir daxil olmaqla istənilən
simvolla uyğun gəlir.
|
re.U |
Hərfləri Unicode simvol dəsti ilə uyğun şəkildə şərh edir.
Bu bayraq \w, \W, \b,
\B davranışına təsir göstərir.
Python 3+-da bu bayraq standart olaraq təyin edilib.
|
re.X |
Çoxsətirli regulyar ifadə sintaksisinə icazə verir.
O, şablon daxilindəki boşluqları nəzərə almır
([] dəsti daxilindəki boşluqlar və ya
gerişli slyash ilə qorunanlar istisna olmaqla)
və qorunmamış '#' simvolunu şərh kimi emal edir.
|
Nümunə
re.IGNORECASE bayrağı vasitəsilə
simvolların registrini nəzərə almamaq olar.
Gəlin bunun necə edildiyinə baxaq. Bu nümunədə
regulyar ifadə yalnız kiçik hərfləri tapacaq:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Kodu icra etmənin nəticəsi:
'! ! CCC DDD'
Nümunə
İndi isə metodun dördüncü parametrinə
re.IGNORECASE bayrağını əlavə edək və
regulyar ifadə bütün registrlerde simvolları
axtarmağa başlayacaq:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Kodu icra etmənin nəticəsi:
'! ! ! !'
Nümunə
Gəlin regulyar ifadə ilə bütün sətir köçürmələrini tapaq:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Kodu icra etmənin nəticəsi:
'aaa!bbb'
Nümunə
Lakin, əgər ümumiyyətlə bütün simvolları dəyişdirmək lazımdırsa, regulyar ifadədə nöqtə qoysaq, sətir köçürmələri tutulmayacaq:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Kodu icra etmənin nəticəsi:
'!!!
!!!'
Nümunə
Bu səhvi düzəltmək üçün re.DOTALL
bayrağından istifadə etmək lazımdır:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Kodu icra etmənin nəticəsi:
'!!!!!!!'
Nümunə
Parametrdə bir neçə bayraq da ötürmək olar,
onların arasına + operatoru qoymaqla.
Gəlin əvvəlcə sətrin sonundakı 'a'
hərfini əvəz edək:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa$', '!', txt)
print(res)
Kodu icra etmənin nəticəsi:
'''
aaa
AAA
!
'''
Nümunə
İndi isə re.M bayrağını təyin edək:
res = re.sub('aaa$', '!', txt, flags=re.M)
print(res)
Kodu icra etmənin nəticəsi:
'''
!
AAA
!
'''
Nümunə
Gəlin indi həm də registri nəzərə almamaq üçün bayraq tətbiq edək:
res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Kodu icra etmənin nəticəsi:
'''
!
!
!
'''