Python'da Düzenli İfadelerde Karakter Kümeleri
\d ve \w karakter grupları
çok esnek değildir. tüm harfleri bulmak ama rakamları bulmamak
gibi basit bir görev bile onlarla çözülemez. Bu tür görevler için
'veya' işlemini temsil eden köşeli parantezler
kullanılmalıdır.
Köşeli parantezler, içinde listelenen herhangi bir
karakterin yerine geçer. Örneğin, şu şekilde: x[abc]x -
kenarlarda x harfleri olması gerektiğini ve içeride - bir karakter:
'a', veya 'b', veya 'c' olması gerektiğini söylüyoruz.
Köşeli parantezlerden sonra tekrarlama operatörleri yazılabilir.
Örneğin, şu şekilde: x[abc]+x - x'lerin içinde
'a', 'b' ve 'c' karakterlerinden herhangi bir miktarda olabileceğini -
herhangi bir kombinasyonda olabileceğini söylüyoruz.
Sadece karakterleri listelemekle kalmayıp, iki karakter arasına tire koyarak
karakter grupları da oluşturulabilir. Örneğin, şu şekilde: [a-d] -
'a' ile 'd' arasındaki tüm karakterleri elde ederiz.
Örneklerle inceleyelim.
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a' ile
'z' arasında herhangi bir harf:
Kodun çalıştırılmasının sonucu:
'! ! ! x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a' ile
'k' arasında herhangi bir harf:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! xmx x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'A' ile
'Z' arasında herhangi bir harf:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'xax ! xcx x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 0
ile 9 arasında herhangi bir rakam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'xax ! ! ! x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 3
ile 7 arasında herhangi bir rakam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'xax x1x ! ! x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a' ile
'z' arasında herhangi bir harf veya
1 ile 9 arasında bir rakam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! ! x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a' ile
'z' arasında herhangi bir harf veya
'A' ile 'Z' arasında herhangi bir harf:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! x5x x@x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a' ile
'z' arasında herhangi bir harf veya 1,
2 rakamları:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! ! x3x'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
x'ler arasında 'a'
ile 'z' arasında 1 veya
daha fazla sayıda harf:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'xx ! ! ! x123x xa3x'
Örnek
Harf sayısının sıfır da olabileceği şekilde ayarlayalım:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Sonuç olarak şunu elde ederiz:
'! ! ! ! x123x xa3x'
Örnek
Köşeli parantezlerin içinde kaçış yapılmış karakterler de belirtilebilir. Harf ve rakamlardan oluşan, sıfır veya daha fazla tekrarlanan bir diziyi bulalım:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! x@x ! ! !'
Örnek
Eğer başka köşeli parantezler de belirtmemiz gerekiyorsa, onları da mutlaka kaçış yapmalıyız:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Kodun çalıştırılmasının sonucu:
'! ! ! x3x'
Pratik Görevler
Bir dize verildi:
txt = 'aba aea aca aza axa'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - 'b',
'e' veya 'x' harfi olan.
Bir dize verildi:
txt = 'a1a a3a a7a a9a aba'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - 3 ile
6 arasında bir rakam olan.
Bir dize verildi:
txt = 'aba aea afa aha aga'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - 'a' ile
'g' arasında bir harf olan.
Bir dize verildi:
txt = 'aba aea afa aha aga'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - 'a' ile
'f' ve 'j' ile
'z' arasında bir harf olan.
Bir dize verildi:
txt = 'aAa aea aEa aJa a3a'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - 'a' ile
'f' ve 'A' ile
'D' arasında bir harf olan.
Bir dize verildi:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - küçük
Latin harfleri olan ve diğerlerini etkilemeyen.
Bir dize verildi:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - küçük ve
büyük Latin harfleri olan, diğerlerini etkilemeden.
Bir dize verildi:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Şu kalıba göre arama yapan bir düzenli ifade yazın:
kenarlarda 'a' harfleri var,
ve aralarında - küçük
Latin harfleri ve rakamlar olan, diğerlerini etkilemeden.