Python-da Regulyar Ifadələrdə Simvol Dəstləri
\d və \w simvol qrupları
çox çevik deyil. Hətta bütün hərfləri, lakin rəqəmləri yox tapmaq kimi
sadə bir vəzifə belə onlar tərəfindən həll edilə bilməz. Bu cür vəzifələr üçün
'və ya' əməliyyatını təmsil edən kvadrat mötərizələrdən istifadə etmək lazımdır.
Kvadrat mötərizələr içəridə sadalanan hər hansı bir simvolu əvəz edir. Məsələn, belə: x[abc]x - biz
deyirik ki, kənarlarda x hərfləri durmalıdır, arasında isə bir simvol: ya 'a',
ya 'b', ya da 'c'.
Kvadrat mötərizələrdən sonra təkrar operatorları yazmaq olar. Məsələn, belə:
x[abc]+x - biz deyirik ki, x-lər arasında istənilən sayda 'a', 'b' və 'c' simvolu ola bilər -
istənilən birləşmədə.
Yalnız simvolları sadalamaqla kifayətlənməyib, iki simvol arasına defis qoyaraq simvol qrupları da yarada bilərsiniz. Məsələn, belə:
[a-d] - biz 'a'-dan 'd'-ə qədər bütün simvolları alırıq.
Gəlin nümunələrə baxaq.
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'z'-ə qədər istənilən hərf:
Kodun icrasının nəticəsi:
'! ! ! x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'k'-ə qədər istənilən hərf:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! ! xmx x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'A'-dan
'Z'-ə qədər istənilən hərf:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'xax ! xcx x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 0-dan
9-a qədər istənilən rəqəm:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'xax ! ! ! x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 3-dan
7-ə qədər istənilən rəqəm:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'xax x1x ! ! x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'z'-ə qədər istənilən hərf və ya 1-dən
9-a qədər rəqəm:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! ! ! ! x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'z'-ə qədər və ya 'A'-dan
'Z'-ə qədər istənilən hərf:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! ! ! x5x x@x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'z'-ə qədər istənilən hərf və ya 1,
2 rəqəmləri:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! ! ! ! x3x'
Nümunə
Bu nümunədə axtarış şablonu belədir: x-lər arasında 'a'-dan
'z'-ə qədər hərflər, 1 və daha çox sayda:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'xx ! ! ! x123x xa3x'
Nümunə
Gəlin elə edək ki, hərflərin sayı sıfır da ola bilə:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Nəticədə alırıq:
'! ! ! ! x123x xa3x'
Nümunə
Kvadrat mötərizələr içərisində eyniləşdirilmiş simvollar da göstərilə bilər. Gəlin hərflər və rəqəmlərdən ibarət, sıfır və ya daha çox dəfə təkrarlanan ardıcıllığı tapaq:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! x@x ! ! !'
Nümunə
Əgər bizə başqa kvadrat mötərizələr göstərmək lazımdırsa, onları da mütləq eyniləşdirməliyik:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Kodun icrasının nəticəsi:
'! ! ! x3x'
Praktiki Tapşırıqlar
Sətir verilmişdir:
txt = 'aba aea aca aza axa'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə 'b', 'e' və ya 'x' hərfi olan.
Sətir verilmişdir:
txt = 'a1a a3a a7a a9a aba'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə 3-dən 6-a qədər rəqəm olan.
Sətir verilmişdir:
txt = 'aba aea afa aha aga'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə 'a'-dan 'g'-ə qədər hərf olan.
Sətir verilmişdir:
txt = 'aba aea afa aha aga'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə 'a'-dan 'f'-ə qədər və 'j'-dən 'z'-ə qədər hərf olan.
Sətir verilmişdir:
txt = 'aAa aea aEa aJa a3a'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə 'a'-dan 'f'-ə qədər və 'A'-dan 'D'-ə qədər hərf olan.
Sətir verilmişdir:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə kiçik latın hərfləri olan, digərlərini toxunmayan.
Sətir verilmişdir:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə kiçik və böyük latın hərfləri olan, digərlərini toxunmayan.
Sətir verilmişdir:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Aşağıdakı şablona uyğun gələn regulyar ifadəni yazın: kənarlarda 'a' hərfləri durur,
aralarında isə kiçik latın hərfləri və rəqəmlər olan, digərlərini toxunmayan.