Python-da Regulyar Ifadələrdə Simvol Qrupları
Dərhal bütöv simvol qruplarını seçməyə imkan verən xüsusi əmrlər mövcuddur. \d əmri 0-dan 9-a qədər rəqəmi ifadə edir. \w əmri rəqəmi, latın hərfini və ya altxətt işarəsini işarə edir. \s əmri boşluq və ya boşluq simvolunu ifadə edir: boşluq, sətir sonu, tabulyasiya. Əmrın dəyərini böyük hərflə yazaraq çevirmək olar: məsələn, \d rəqəmdirsə, \D rəqəm deyil.
Nümunə
Gəlin bütün rəqəmləri tapaq:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'! !! !!!'
Nümunə
Təkrar operatorları simvol qrupu əmrlərini bir bütöv hesab edir, yəni qruplaşdırma mötərizələri lazım deyil. Aşağıdakı nümunədə axtarış şablonu belə görünür: 0-dan 9-a qədər rəqəm bir və ya daha çox dəfə:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'! ! ! abc @@@'
Nümunə
Aşağıdakı nümunədə axtarış şablonu belə görünür: bir və ya daha çox dəfə istənilən şey, lakin 0-dan 9-a qədər rəqəm deyil:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'123!3!'
Nümunə
Bu nümunədə axtarış şablonu belə görünür: bir dəfə boşluq simvolu:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'1!12!123!abc!@@@'
Nümunə
Bu nümunədə axtarış şablonu belə görünür: BOŞLUQ OLMAYAN simvol bir və ya daha çox dəfə. Boşluqlarla ayrılmış bütün alt sətirlər '!' ilə əvəz olunacaq:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'! ! ! ! !'
Nümunə
Bu nümunədə axtarış şablonu belə görünür: rəqəm və ya hərf bir və ya daha çox dəfə. Rəqəmlərdən və hərflərdən ibarət olan bütün alt sətirlər '!' ilə əvəz olunacaq:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'! ! ! ! @@@'
Nümunə
Bu nümunədə axtarış şablonu belə görünür: rəqəm OLMAYAN və hərf OLMAYAN bir və ya daha çox dəfə. Bizim vəziyyətimizdə bu tərifə '@@@' və bütün boşluqlar (onlar da həm rəqəm, həm də hərf olmadıqları üçün) daxildir. Diqqət edin ki, sondaki bir '!' - önündə boşluq olan ' @@@' sətiri çevrildi:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Kodu icra etmə nəticəsi:
'1!12!123!Abc!'
Praktiki Tapşırıqlar
Sətir verilmişdir:
txt = 'a1a a2a a3a a4a a5a aba aca'
Kənarlarında 'a' hərfləri, arasında isə bir rəqəm olan sətirləri tapacaq regulyar ifadə yazın.
Sətir verilmişdir:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Kənarlarında 'a' hərfləri, arasında isə istənilən sayda rəqəm olan sətirləri tapacaq regulyar ifadə yazın.
Sətir verilmişdir:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Kənarlarında 'a' hərfləri, arasında isə istənilən sayda rəqəm (o cümlədən sıfır rəqəm, yəni 'aa' sətiri) olan sətirləri tapacaq regulyar ifadə yazın.
Sətir verilmişdir:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Aşağıdakı növ sətirləri tapacaq regulyar ifadə yazın: Kənarlarında 'a' və 'b' hərfləri, arasında isə - rəqəm və ya boşluq OLMAYAN.
Sətir verilmişdir:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Aşağıdakı növ sətirləri tapacaq regulyar ifadə yazın: Kənarlarında 'a' və 'b' hərfləri, arasında isə - hərf, rəqəm və ya boşluq OLMAYAN.
Sətir verilmişdir:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Bütün boşluqları '!' ilə əvəz edəcək regulyar ifadə yazın.