ProgramlamaPerl Geliştirici

Perl düzenli ifadelerinin özelliklerini listeleyin. Hangi modifikatörler vardır ve eşleşme sonuçları nasıl işlenir? Düzenli ifade ile bir dize ayrıştırmaya örnek verin.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Perl, düzenli ifadelerle çalışmak için en güçlü dillerden biridir. Eşleşme için =~ ve !~ operatörleri kullanılır.

Düzenli ifade modifikatörleri:

  • i — büyük/küçük harf durumu önemli değil
  • g — global arama (tüm eşleşmeler)
  • m — çok satırlı mod (her satır için ^ ve $ çalışır)
  • s — nokta (.) yeni satır karakterini içerir

Örnek:

my $text = "My email: max@mail.com and ann@ya.ru."; while ($text =~ /([\w.]+@[\w.]+)/g) { print "Email: $1 "; }

Bu örnekte döngü, dizeden tüm e-postaları çıkarır.

Eşleşmeden sonra değerler özel değişkenlerde $1, $2, ... (her eşleşen grup için) tutulur.

Yanıltıcı Soru

Düzensiz ifade ile başarısız bir eşleşme sonrası $1 değişkeninde ne saklanır?

Cevap:

$1, başarısız bir eşleşme durumunda güncellenmez — son başarılı eşleşmenin değerini saklar. Bu potansiyel bir hata kaynağıdır! Bunu önlemek için karmaşık durumlarda $1, $2, ... açıkça temizlemek daha iyidir.

Konunun inceliklerini bilmemekten kaynaklı gerçek hata örnekleri


Hikaye

Giriş verilerinin doğrulanması karmaşık bir düzenli ifadeye bağlıydı ve $1 değerine dayanıyordu. Uygun bir dize bulamayan bir eşleşmeden sonra, $1 değişmedi ve işlem eski, yanlış bir e-posta adresinden devam etti.


Hikaye

Programcı modifikatörde hata yaptı. Büyük bir metinde /abc/g kullanarak çok satırlı modda olduğunu düşündü. Sonuç olarak desen, satır sonları ile gerekli dizeleri bulamadı; /abc/ms kullanması gerekti.


Hikaye

Projede tüm eşleşmeleri bulmak için global bayrak /g kullanılmadı. Sonuç olarak, betik sadece ilk eşleşmeyi çıkardı, oysa kullanıcı tam veri listesini bekliyordu.