regexp Temelleri
Örüntüleri derleyin ve eşleştirin
regexp Temelleri, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. 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.
Düzenli İfade Nedir?
Düzenli ifade (regexp), bir dize kümesini tanımlayan bir desendir. Go, bunları regexp paketi aracılığıyla sunar.
Metni doğrulamak ve aramak için idealdirler.
package main
import (
"fmt"
"regexp"
)
func main() {
matched, _ := regexp.MatchString("go+", "gooo")
fmt.Println(matched)
}MatchString ile Hızlı Eşleştirme
regexp.MatchString(pattern, s), desenin s içinde herhangi bir yerde bulunup bulunmadığını bildirir. Bir doğru/yanlış değeri ve bir hata döndürür.
package main
import (
"fmt"
"regexp"
)
func main() {
ok, _ := regexp.MatchString("cat", "the cat sat")
fmt.Println(ok)
}Bir Deseni Derleme
Tekrar tekrar kullanacaksanız regexp.Compile ile bir kez derleyin. Bu işlem yeniden kullanılabilir bir *regexp.Regexp ve geçersiz desenler için bir hata döndürür.
package main
import (
"fmt"
"regexp"
)
func main() {
re, err := regexp.Compile("[0-9]+")
fmt.Println(re.MatchString("abc123"), err)
}Sabitler için MustCompile
regexp.MustCompile, desen geçersizse panik oluşturur. Bunu, derleme zamanında bilinen sabit desenler için, genellikle paket düzeyindeki değişkenlerde kullanın.
package main
import (
"fmt"
"regexp"
)
var digits = regexp.MustCompile("[0-9]+")
func main() {
fmt.Println(digits.MatchString("order 42"))
}Karakter Sınıfları
Köşeli parantezler izin verilen karakterlerden oluşan bir küme tanımlar. [aeiou] herhangi bir sesli harfle eşleşir; [a-z] gibi aralıklar bir karakter aralığıyla eşleşir.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Println(re.MatchString("Hello"))
}Önceden Tanımlanmış Sınıflar
Kısayollar, yaygın kümelerin kullanımını kolaylaştırır: \d bir digits, \w bir sözcük karakteri, \s ise boşluktur. Go dizelerinde ters eğik çizgiyi kaçış karakteri olarak yazın.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("\\d+")
fmt.Println(re.MatchString("abc 99"))
}Nicelik Belirteçleri
Nicelik belirteçleri kaç kez eşleşileceğini belirtir:
*sıfır veya daha fazla,+bir veya daha fazla,?sıfır veya bir,{2,4}bir aralık.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("a{2,3}")
fmt.Println(re.MatchString("aaa"))
fmt.Println(re.MatchString("a"))
}Çapalar
Çapalar bir eşleşmeyi sabitler: ^ metnin başlangıcını, $ ise sonunu belirtir. Dizenin tamamının eşleşmesini zorunlu kılmak için ikisini de kullanın.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^go$")
fmt.Println(re.MatchString("go"))
fmt.Println(re.MatchString("going"))
}Alternatifler ve Gruplar
Dikey çubuk |, OR anlamına gelir; parantezler ise parçaları birlikte gruplandırır. (cat|dog)s?, cat, cats, dog veya dogs ile eşleşir.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(cat|dog)s?")
fmt.Println(re.MatchString("dogs"))
}Bir Biçimi Doğrulama
Çapalanmış desenler doğrulayıcılar oluşturmanızı sağlar. Burada yalnızca digits içeren, tam olarak beş digits uzunluğunda, ZIP tarzı basit bir kodu kontrol ediyoruz.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^\\d{5}$")
fmt.Println(re.MatchString("12345"))
fmt.Println(re.MatchString("123"))
}Baytlar Üzerinde Eşleştirme
Yöntemlerin dize ve bayt dilimi biçimleri bulunur. Match, []byte üzerinde çalışır ve MatchString ile aynı işi yapar.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.Match([]byte("id7")))
}Hızlı Kontrol
Geçersiz bir desende panik oluşturan ve sabit desenler için en uygun olan işlev hangisidir?
Özet: regexp Temelleri
Temel bilgileri öğrendiniz:
MatchStringile hızlıca eşleştirin;CompileveyaMustCompileile derleyin.- Desenleri sınıflardan, nicelik belirteçlerinden, çapalardan ve gruplardan oluşturun.
- Dizenin tamamını doğrulamak için
^ve$ile sınırlayın.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^[a-z]+@[a-z]+$")
fmt.Println(re.MatchString("hi@host"))
}Sıkça Sorulan Sorular
“regexp Temelleri” dersi ücretsiz mi?
Evet — “regexp Temelleri” 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.
“regexp Temelleri” dersinde ne öğreneceğim?
Örüntüleri derleyin ve eşleştirin 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 1. dersidir.
“regexp Temelleri” 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
- regexp Temelleri
- Bulma ve Çıkarma
- Metni Değiştirme
- Performans İpuçları