Python'da Normal İfadeler (Regex) Nasıl Kullanılır

Yerleşik re modülünü kullanarak Python düzenli ifadelerinde ustalaşın. Dize eşleştirmeyi, kalıp aramayı, tüm oluşumları bulmayı ve metin değiştirmeyi öğrenin.

Bu Çözümü Editör'de deneyin

Genel Bakış

Yaygın olarak regex olarak bilinen normal ifadeler, metin dizelerini belirli kalıplara göre eşleştirmek, aramak ve değiştirmek için kullanılan güçlü şablonlardır. Regex, e-posta doğrulama, telefon numarası doğrulama, web kazıma, günlük ayrıştırma ve metin ara ve değiştir görevleri için yaygın olarak kullanılır. Python, yerleşik 'yeniden' modülü aracılığıyla tam normal ifade yetenekleri sağlar.

'Re' modülü hedefinize bağlı olarak çeşitli temel işlevler sunar. 're.search(pattern, string)' işlevi bir dizeyi tarar ve modelin ilk oluşumu için bir eşleşme nesnesi döndürür. 're.match(pattern, string)' işlevi benzerdir ancak yalnızca dizenin en başından itibaren arama yapar. Bir metin bloğundaki bir modelin tüm örneklerini almak istiyorsanız, 're.findall(pattern, string)' bunları bir dize listesi olarak döndürür.

Normal ifade kalıpları rakamlar için "\d", alfasayısal karakterler için "\w", bir veya daha fazla oluşum için "+" ve sıfır veya daha fazlası için "*" gibi özel meta karakterleri kullanır. Python'da normal ifade yazarken, Python'un ters eğik çizgileri kaçış dizileri olarak değerlendirmesini önlemek için ham dize değişmezlerini ('r"\d+"' gibi 'r' önekiyle gelir) kullanmak standart bir uygulamadır.

Kod ve Yürütme Çıkışı

Bu komut dosyası, format yapılarının doğrulanmasını, sayısal belirteçlerin çıkarılmasını ve re modülünü kullanarak eşleşen kalıpların değiştirilmesini gösterir.

regex_demo.py
Editör'de deneyin
import re

# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"

match = re.search(pattern_port, log_message)
if match:
    print("Found port pattern:", match.group())

# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)

# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)
Terminal Çıkışı
Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25

Adım Adım Uygulama

  • Yerleşik yeniden modülünü içe aktarın.
  • Kaçış sırası sorunlarını önlemek için r"\d+" gibi ham dizeleri kullanarak normal ifade arama modellerini tanımlayın.
  • İlk oluşumu bulmak için re.search() işlevini veya eşleşen tüm alt dizeleri toplamak için re.findall() işlevini kullanın.
  • Metin içinde desen tabanlı değiştirmeler gerçekleştirmek için re.sub(pattern, replacement, string) öğesini kullanın.

Sıkça Sorulan Sorular

Normal ifade kalıpları için ham dizeler (r"...") kullanmanın faydası nedir?

Ham dizeler ters eğik çizgileri kaçış karakterleri yerine değişmez karakterler olarak ele alır. Örneğin, r"\n" ters eğik çizgiyi ve ardından gelen "n"yi, "\n" ise yeni satır karakterini temsil eder.

Bir normal ifade eşleşmesinin başarılı olup olmadığını nasıl kontrol ederim?

re.search() ve re.match() başarılı olursa bir eşleşme nesnesi döndürür, eşleşme bulunamazsa Yok olur. Sonucu bir koşullu ifade kullanarak kontrol etmelisiniz (örneğin, if match:).

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.