0Pricing
Go Academy · Ders

Bulma ve Çıkarma

FindString ve alt eşleşmeler

Bulma ve Çıkarma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. 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, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Eşleştirmenin Ötesi

Eşleştirme, bir desenin olup olmadığını söyler. Find ailesi ise neyin eşleştiğini ve nerede olduğunu söyler; böylece veri çıkarabilirsiniz.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindString("order 42 ready"))
}

FindString

FindString(s), ilk eşleşmeyi dize olarak döndürür; eşleşme yoksa boş bir dize döndürür.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Printf("%q\n", re.FindString("123abc456"))
}

FindAllString

FindAllString(s, n), tüm eşleşmeleri bir dilim olarak döndürür. Tüm eşleşmeler için -1, pozitif bir sınır için pozitif bir değer geçirin.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("a1 b22 c333", -1))
}

Sonuçları Sınırlama

Bu kadar eşleşmeden sonra durması için pozitif bir n değeri geçirin.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("1 2 3 4", 2))
}

Dizini Bulma

FindStringIndex(s), ilk eşleşmenin başlangıç ve bitiş bayt konumlarını iki öğeli bir dilim olarak döndürür.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("cat")
    fmt.Println(re.FindStringIndex("a cat here"))
}

Yakalama Grupları

Parantezler yakalama grupları oluşturur. FindStringSubmatch, önce eşleşmenin tamamını, ardından yakalanan her grubu döndürür.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)-(\\d+)")
    m := re.FindStringSubmatch("12-34")
    fmt.Println(m)
}

Submatch Değerlerini Kullanma

Alt eşleşme dilimini dizinleyin: 0. öğe tam eşleşmedir, 1. öğe ilk gruptur ve bu şekilde devam eder.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+):(\\d+)")
    m := re.FindStringSubmatch("09:30")
    fmt.Println("hour", m[1], "min", m[2])
}

Adlandırılmış Gruplar

(?P<name>...) ile bir gruba ad verin, ardından alt eşleşme dilimiyle birlikte SubexpNames aracılığıyla bu grubu okuyun.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(?P<area>\\d{3})-(?P<num>\\d{4})")
    m := re.FindStringSubmatch("555-1234")
    for i, name := range re.SubexpNames() {
        if name != "" {
            fmt.Println(name, m[i])
        }
    }
}

Tüm Alt Eşleşmeler

FindAllStringSubmatch(s, n), her eşleşme için bir tane olmak üzere alt eşleşme dilimlerinden oluşan bir dilim döndürür. Çok sayıda kaydı ayrıştırmak için idealdir.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)=(\\d+)")
    all := re.FindAllStringSubmatch("x=1 y=2", -1)
    for _, m := range all {
        fmt.Println(m[1], m[2])
    }
}

Eşleşme Olmadığında Davranış

Hiçbir şey eşleşmediğinde Find yöntemleri boş bir dize veya nil dilimi döndürür. Panikten kaçınmak için dizinlemeden önce kontrol edin.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    m := re.FindStringSubmatch("no digits")
    fmt.Println(m == nil)
}

Gerçek Verileri Çıkarma

Bir metin satırından yapılandırılmış alanları çıkarmak için grupları birleştirin.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d{4})-(\\d{2})-(\\d{2})")
    m := re.FindStringSubmatch("date: 2026-05-30")
    fmt.Println("year", m[1])
}

Hızlı Kontrol

Alt eşleşme diliminin hangi öğesi tüm eşleşmeyi içerir?

Özet: Bulma ve Çıkarma

Artık metinden veri çıkarabilirsiniz:

  • FindString ve FindAllString eşleşmeleri döndürür.
  • FindStringSubmatch, yakalama gruplarıyla birlikte tam eşleşmeyi döndürür.
  • Adlandırılmış grupları kullanın ve hiçbir şey eşleşmediğinde nil değerini kontrol edin.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)@(\\w+)")
    m := re.FindStringSubmatch("user@host")
    fmt.Println(m[1], "at", m[2])
}

Sıkça Sorulan Sorular

“Bulma ve Çıkarma” dersi ücretsiz mi?

Evet — “Bulma ve Çıkarma” 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 Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Bulma ve Çıkarma” dersinde ne öğreneceğim?

FindString ve alt eşleşmeler Go 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.

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

Önceden deneyim gerekmez. CoddyKit'te Go 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 2. dersidir.

“Bulma ve Çıkarma” 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 Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go 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. regexp Temelleri
  2. Bulma ve Çıkarma
  3. Metni Değiştirme
  4. Performans İpuçları
← Go Academy Sayfasına Dön