Python'da Düzenli İfadelerde Karakter Grupları
Bir seferde tüm karakter gruplarını
seçmeye izin veren özel komutlar vardır.
\d komutu, 0 ile 9
arasında bir rakam anlamına gelir.
\w komutu, bir rakamı, Latin harfini
veya alt çizgi işaretini belirtir.
\s komutu, bir boşluk veya boşluk
karakterini belirtir: boşluk, satır sonu,
sekme. Komutun anlamını, büyük harf
yazarak tersine çevirebilirsiniz:
örneğin, \d bir rakamsa,
\D rakam olmayan anlamına gelir.
Örnek
Tüm rakamları bulalım:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! !! !!!'
Örnek
Tekrarlama operatörleri, komut gruplarını
bir bütün olarak kabul eder, yani gruplama
parantezlerine gerek yoktur. Aşağıdaki
örnekte arama kalıbı şu şekildedir:
0 ile 9 arasında bir rakam,
bir veya daha fazla kez:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! abc @@@'
Örnek
Aşağıdaki örnekte arama kalıbı şu
şekildedir: bir veya daha fazla kez
herhangi bir şey, ancak 0 ile
9 arasında bir rakam değil:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'123!3!'
Örnek
Bu örnekte arama kalıbı şu şekildedir: bir kez boşluk karakteri:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'1!12!123!abc!@@@'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
boşluk karakteri OLMAYAN, bir veya daha
fazla kez. Boşluklarla ayrılmış tüm
alt dizeler, '!' ile değiştirilecektir:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! ! !'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
rakam veya harf, bir veya daha fazla kez.
Rakam ve harflerden oluşan tüm alt dizeler,
'!' ile değiştirilecektir:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! ! @@@'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
rakam OLMAYAN ve harf OLMAYAN, bir veya
daha fazla kez. Bizim durumumuzda bu
tanıma '@@@' ve tüm boşluklar (onlar
da rakam veya harf olmadığı için) girer.
Sonunda bir tane '!' olduğuna dikkat
edin - bu, önünde boşluk bulunan
' @@@' dizesine dönüştürüldü:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'1!12!123!Abc!'
Pratik Görevler
Bir dize verildi:
txt = 'a1a a2a a3a a4a a5a aba aca'
Kenarlarda 'a' harfleri olan ve
aralarında bir rakam bulunan dizeleri
bulan bir düzenli ifade yazın.
Bir dize verildi:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Kenarlarda 'a' harfleri olan ve
aralarında herhangi bir miktarda rakam
bulunan dizeleri bulan bir düzenli ifade yazın.
Bir dize verildi:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Kenarlarda 'a' harfleri olan ve
aralarında herhangi bir miktarda rakam
(hatta sıfır rakam dahil, yani
'aa' dizesi) bulunan dizeleri
bulan bir düzenli ifade yazın.
Bir dize verildi:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Şu türdeki dizeleri bulan bir düzenli ifade yazın:
Kenarlarda 'a' ve 'b'
harfleri olan ve aralarında - rakam veya
boşluk OLMAYAN.
Bir dize verildi:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Şu türdeki dizeleri bulan bir düzenli ifade yazın:
Kenarlarda 'a' ve 'b'
harfleri olan ve aralarında - harf, rakam
veya boşluk OLMAYAN.
Bir dize verildi:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Tüm boşlukları '!' ile değiştiren
bir düzenli ifade yazın.