0Pricing
Swift Academy · Ders

RegexBuilder DSL

Okunabilir bir oluşturucuyla regex ifadeleri birleştirin.

RegexBuilder DSL, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

RegexBuilder DSL

Karmaşık düzenli ifade sabitlerinin okunması zorlaşabilir. RegexBuilder modülü, adlandırılmış bileşenler ve türler kullanarak sonuç oluşturucu bir DSL ile Swift kodundan örüntüler oluşturmanızı sağlar.

RegexBuilder'ı İçeri Aktarma

Önce modülü içeri aktarın, ardından Regex { ... } oluşturucusuyla bir Regex oluşturun. İçerideki her satır, örüntünün sıralı bir parçasıdır.

import RegexBuilder

let re = Regex {
    "ID-"
    OneOrMore(.digit)
}
print("ID-42".contains(re))

OneOrMore

OneOrMore(...), verilen bileşenin bir veya daha fazla kez eşleşmesini sağlar; bu, + ile eşdeğerdir. .digit yerleşik bir karakter sınıfıdır.

import RegexBuilder

let number = Regex {
    OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
    print(m.0)
}

ZeroOrMore ve İsteğe Bağlı

ZeroOrMore, * ve Optionally, ? anlamına gelir. Bunlar, örüntünün parçalarının yinelenebilmesini veya atlanabilmesini sağlar.

import RegexBuilder

let re = Regex {
    "color"
    Optionally("u")
    "r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)

Capture

Capture { ... } bir yakalama grubu oluşturur. Eşleşen alt dize, tıpkı bir sabitteki parantezlerde olduğu gibi çıktı demetinde görünür.

import RegexBuilder

let re = Regex {
    "v"
    Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
    print("Version: \(m.1)")
}

Yakalamaları Dönüştürme

Bir Capture, eşleşen metni türlendirilmiş bir değere dönüştüren bir dönüşüm kapanışı içerebilir; böylece çıktı zaten bir Int veya başka bir tür olur.

import RegexBuilder

let re = Regex {
    Capture {
        OneOrMore(.digit)
    } transform: { Int($0)! }
}
if let m = "42".wholeMatch(of: re) {
    let n: Int = m.1
    print(n + 1)
}

CharacterClass

İzin verilen karakterleri tanımlamak için CharacterClass veya .word, .whitespace gibi yerleşik bileşenleri ve ("a"..."z") gibi aralıkları kullanın.

import RegexBuilder

let re = Regex {
    One(.word)
    ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))

Oluşturucuda Bağlayıcılar

Oluşturucunun içindeki konum doğrulamalarına Anchor.startOfLine ve Anchor.endOfLine ekleyin.

import RegexBuilder

let re = Regex {
    Anchor.startOfLine
    OneOrMore(.digit)
    Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)

Yeniden Kullanılabilir Bileşenler

Alt örüntüleri değişkenlerde saklayıp birleştirebilirsiniz; bu, büyük düzenli ifadeleri modüler ve okunabilir hâle getirir.

import RegexBuilder

let field = Reference(Substring.self)
let re = Regex {
    Capture(as: field) { OneOrMore(.word) }
}
if let m = "name".firstMatch(of: re) {
    print(m[field])
}

Birden Çok Yakalama

Her Capture sırayla bir çıktı öğesi ekler; bu nedenle bir tarih ayrıştırıcı yıl, ay ve günü ayrı ayrı sunar.

import RegexBuilder

let date = Regex {
    Capture { Repeat(.digit, count: 4) }
    "-"
    Capture { Repeat(.digit, count: 2) }
}
if let m = "2024-05".wholeMatch(of: date) {
    print("\(m.1) / \(m.2)")
}

DSL mi Sabit mi Seçmek

Kısa örüntüler için sabitleri, adlardan, türlerden ve dönüşümlerden yararlanan uzun örüntüler için DSL'yi kullanın. Bunlar birbirinin yerine kullanılabilir ve hatta iç içe yerleştirilebilir.

import RegexBuilder

let re = Regex {
    "#"
    Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
    print("Hex: \(m.1)")
}

Hızlı Kontrol

Bir şeyin bir veya daha fazla kez eşleşmesini sağlayan RegexBuilder bileşeni hangisidir?

Özet

RegexBuilder DSL'si, Regex { } ile Swift kodundan düzenli ifadeler oluşturur; bunun için OneOrMore, Optionally, dönüşümlü Capture, karakter sınıfları ve bağlayıcıları kullanır. Karmaşık örüntüleri okunabilir ve tür açısından güvenli hâle getirir. Sırada, replacing ve split ile metni değiştirecek ve böleceksiniz.

Sıkça Sorulan Sorular

“RegexBuilder DSL” dersi ücretsiz mi?

Evet — “RegexBuilder DSL” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“RegexBuilder DSL” dersinde ne öğreneceğim?

Okunabilir bir oluşturucuyla regex ifadeleri birleştirin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“RegexBuilder DSL” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Regex Sabitleri ve Eşleştirme
  2. Yakalama Grupları
  3. RegexBuilder DSL
  4. Metni Değiştirme ve Bölme
← Swift Academy Sayfasına Dön