DOLAR 39,2875 -0.11%
EURO 44,7841 -0.54%
ALTIN 4.175,92-1,41
BITCOIN 0%
İstanbul
27°

AÇIK

SABAHA KALAN SÜRE

İleri Seviye Regex (Düzenli İfadeler) Kullanımıyla Script Güçlendirme
  • TREND
  • Uncategorized
  • İleri Seviye Regex (Düzenli İfadeler) Kullanımıyla Script Güçlendirme
905 okunma

İleri Seviye Regex (Düzenli İfadeler) Kullanımıyla Script Güçlendirme

ABONE OL
Nisan 5, 2025 10:09
İleri Seviye Regex (Düzenli İfadeler) Kullanımıyla Script Güçlendirme
0

BEĞENDİM

ABONE OL

Script Düzenli ifadeler (regex), metin işleme, veri analizi ve veri doğrulama gibi pek çok farklı alanda çok güçlü araçlardır. Python’da regex işlemleri yapmak için re modülü kullanılır. Bu modül sayesinde metinlerdeki belirli desenleri arayabilir, değiştirebilir veya manipüle edebilirsiniz. İleri seviye regex kullanımı, scriptlerinizi daha güçlü hale getirerek karmaşık metin analizlerini daha verimli yapmanıza olanak tanır.

Bu yazıda, regex kullanarak bir scripti nasıl daha güçlü ve verimli hale getirebileceğinizi göstereceğim.

1. Temel Regex Fonksiyonları

İlk olarak, Python’da re modülünün temel fonksiyonlarına göz atalım:

  • re.match(): Bir dizenin başlangıcında belirli bir deseni arar.
  • re.search(): Bir dizede herhangi bir yerde belirli bir deseni arar.
  • re.findall(): Desene uyan tüm parçaları döndürür.
  • re.sub(): Belirli bir deseni başka bir metinle değiştirir.

2. İleri Seviye Regex Kullanımı

2.1. Grup ve Parantezler ile Veri Çekme

Regex, parantez kullanarak bir desende gruplar oluşturmanıza imkan verir. Bu gruplar, belirli metin parçalarını yakalamak ve bunları daha sonra işlemek için kullanılır.

Örnek: Bir metindeki e-posta adreslerini bulalım.

import re

text = "Beni e-posta ile iletişime geçebilirsiniz: example@test.com veya test@example.org"

# E-posta adreslerini yakalamak için regex deseni
email_pattern = r'([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})'

# re.findall() ile tüm eşleşmeleri bul
emails = re.findall(email_pattern, text)

print("Bulunan E-posta Adresleri:", emails)

Bu örnekte, regex deseni, @ sembolü ve nokta (.) gibi karakterleri içeriyor ve ardından metindeki tüm e-posta adreslerini buluyor.

2.2. Önceden Tanımlı Karakter Sınıfları

Regex, önceden tanımlı karakter sınıflarını kullanarak belirli türdeki karakterleri aramanızı sağlar. Örneğin, sayıları, harfleri veya özel karakterleri tanıyabilirsiniz.

Örnek: Bir metindeki tüm sayıları yakalayalım.

import re

text = "Fiyatlar: 100, 200, 300, 1500, 9999"

# Sayıları yakalamak için regex deseni
numbers = re.findall(r'\d+', text)

print("Bulunan Sayılar:", numbers)

Bu örnekte, \d+ deseni, metindeki tüm ardışık rakamları (sayıları) yakalar.

2.3. Karakter Aralıkları ve Seçenekler

Karakter aralıkları, belirli bir grup karakter arasındaki tüm karakterleri seçmenize olanak tanır. Örneğin, belirli bir harf aralığı ya da belirli bir sayfa kodu aramak için kullanabilirsiniz.

Örnek: Büyük harfleri ve küçük harfleri yakalayalım.

import re

text = "Python, Java ve C++ gibi diller kullanarak script yazabilirim."

# Büyük harfleri ve küçük harfleri yakalamak için regex deseni
matches = re.findall(r'[a-zA-Z]+', text)

print("Bulunan Kelimeler:", matches)

Bu örnekte, [a-zA-Z]+ deseni, metindeki tüm harflerden oluşan kelimeleri yakalar.

2.4. Öneki ve Sonekleri Kullanma

Regex desenlerinde, kelimelerin başına (^) veya sonuna ($) bakabilirsiniz. Bu, metnin belirli bir kısmının başlangıcını veya sonunu kontrol etmek için kullanışlıdır.

Örnek: Metnin başında “Python” kelimesi olup olmadığını kontrol edelim.

import re

text = "Python ile script yazmak çok eğlenceli."

# Metnin başında "Python" kelimesini kontrol et
if re.match(r'^Python', text):
    print("Metin Python ile başlıyor.")
else:
    print("Metin Python ile başlamıyor.")

Burada, ^Python deseni, metnin başında “Python” kelimesinin olup olmadığını kontrol eder.

2.5. Lookahead ve Lookbehind (İleriye ve Geriye Bakma)

Lookahead ve lookbehind, bir deseni yalnızca bir koşul sağlandığında eşleştirecek şekilde kullanmanıza olanak tanır. Bu tür işlemler ileri seviye regex tekniklerindendir.

  • Lookahead ((?=...)): Ardından gelen deseni kontrol eder.
  • Lookbehind ((?<=...)): Önceki deseni kontrol eder.

Örnek: “@” sembolünden önceki kelimeleri yakalayalım.

import re

text = "Bu e-posta adresi: example@test.com"

# Lookahead kullanarak @ sembolünden önceki kelimeyi yakalayalım
result = re.findall(r'\w+(?=@)', text)

print("E-posta Öncesi Kelime:", result)

Bu örnekte, \w+(?=@) deseni, @ sembolünden önceki kelimeyi (e-posta kullanıcı adını) bulur.

2.6. Regex ile Metin Değiştirme (re.sub())

re.sub() fonksiyonu, bir metindeki belirli bir deseni başka bir metinle değiştirmek için kullanılır.

Örnek: E-posta adreslerini anonimleştirelim.

import re

text = "Beni e-posta ile iletişime geçebilirsiniz: example@test.com veya test@example.org"

# E-posta adreslerini anonimleştir
anonymized_text = re.sub(r'([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})', '***@***.com', text)

print("Anonimleştirilmiş Metin:", anonymized_text)

Bu örnekte, metindeki tüm e-posta adreslerini ***@***.com ile değiştirdik.

3. Regex Performansı ve Optimizasyon

Regex kullanırken performans önemli olabilir. Büyük veri kümesi veya karmaşık desenler ile çalışırken, regex’in hızını artırmak için aşağıdaki yöntemleri kullanabilirsiniz:

  • Özel karakterlerin kaçırılması: Regex deseni içinde özel karakterler (örneğin ., +, *, ?) kullanıyorsanız, bu karakterlerin kaçırıldığından emin olun.
  • Kısa ve net desenler: Karmaşık ve uzun desenler, işlem süresini artırabilir. Gereksiz grup eşleştirmelerinden kaçının.

4. Sonuç

Regex, Python’da veri doğrulama, metin analizi ve metin manipülasyonu için son derece güçlü bir araçtır. İleri seviye regex özelliklerini kullanarak, scriptlerinizi daha esnek ve güçlü hale getirebilir, karmaşık metin verilerini kolayca işleyebilirsiniz. Yukarıdaki örnekler, regex kullanarak Python’da metin işlemenin ne kadar güçlü ve verimli olabileceğini gösteriyor.

En az 10 karakter gerekli


HIZLI YORUM YAP
300x250r
300x250r