Çoğu programcının bir kör noktası vardır. Bir dağıtık sistemdeki hataları ayıklamaktan veya yeni bir framework ile boğuşmaktan mutluluk duyarlar, ancak on saniye sürmesi gereken manuel bir metin düzenlemesi için yirmi dakika harcayabilirler. Bunun nedeni her zaman aynıdır: düzenli ifadeler (regex) satır gürültüsü gibi görünür. Tipik bir desen; 1990'ların modeminden iletilmiş gibi görünen bir eğik çizgiler, ters eğik çizgiler ve noktalama işaretleri duvarıdır. Bu görsel kaos, yetenekli insanları gerçekten değerli bir beceriden uzaklaştırır.

İyi haber şu ki, regex zor değildir. Sadece yoğundur. Semboller, küçük bir alana muazzam miktarda anlam sığdırır, bu nedenle gözünüz aslında çok kesin bir tanım varken rastgelelik okur. Doğru zihinsel modele sahip olduğunuzda, sembolleri tek tek çözmeye çalışmayı bırakır ve bunun yerine tanımladıkları şekli okumaya başlarsınız. Bunu yaptığınızda, gürültü tamamen dağılır.

Bir Program Değil, Bir Desen

Temel değişim, bir düzenli ifadenin gerçekte ne olduğunu anlamaktır. Yazdığınız kodların çoğu yordamsaldır: şunu yap, sonra bunu yap, şu koşulu kontrol et, tekrar döngüye gir. Bir regex bir prosedür değildir. Metnin nasıl görünmesi gerektiğini tanımlayan statik bir desendir. Nasıl arama yapılacağına dair talimatlar yazmıyorsunuz; eşleştirme motoruna bir taslak verip işi ona bırakıyorsunuz.

Bunu, şekilleri sade bir dille tarif etmek gibi düşünün:

  • Beş haneli bir sayı.
  • Bir e-posta adresi.
  • Büyük harfle başlayan bir satır.

Regex'in yaptığı tek şey budur, sadece sıkıştırılmış bir alfabe kullanır. \d{5} gördüğünüzde bir sihir görmüyorsunuz. "Bir rakam, beş kez" görüyorsunuz. ^[A-Z] gördüğünüzde "satır başı, ardından gelen bir büyük harf" görüyorsunuz. Beceri ezberlemek değildir. Desene bir göz atıp onu tekrar o sade dildeki tanıma dönüştürmeyi öğrenmektir. Bu çeviriyi yapabildiğinizde, göz korkutma faktörü ortadan kalkar.

Zaman Aslında Nereye Gidiyor

İnsanlar genellikle ancak yeterince acı çektikten sonra regex öğrenmeye meyillidirler. Daha iyi bir yaklaşım, bir öğleden sonranızı harcamadan önce bir desene ihtiyaç duyan işleri fark etmektir.

İki yüz sayfalık bir belgedeki her tarihi bulmanız gerekiyorsa, bir regex bunları tek bir geçişte bulacaktır. Uygulamanız kabul etmeden önce bir kullanıcının gerçek bir URL yazıp yazmadığını doğrulamak istiyorsanız, bir desen adresin temel şeklini zorunlu kılabilir. Bir web sitesinden kopyalanan metni temizliyorsanız ve birden fazla boşluğu tek bir boşluğa indirmek istiyorsanız, bir değiştirme regex'i sadece dört karakter sürer. Karışık sunucu günlüklerinden veri çıkarıyorsanız, regex genellikle yapılandırılmamış metin ile yapılandırılmış bir rapor arasındaki tek makul köprüdür.

Benimsenmesi gereken basit bir kural var: Eğer bir metin düzenlemesini elli kez elle yapacaksanız, durun. Bunun yerine bir desen yazın. Manuel tekrar sadece yavaş değildir; aynı zamanda güvenilmezdir. Kırk yedinci örneği kaçırabilir veya otuz üçüncüsünde bir yazım hatası yapabilirsiniz. Bir desen işi bir kez, doğru bir şekilde yapar ve en başta uygulamaya çalıştığınız kuralı belgelemiş olur.

İşe Yarayan