0Pricing
C++ Academy · Ders

regex Temelleri

Metindeki örüntüleri eşleştirin

regex Temelleri, CoddyKit'te ücretsiz bir C++ 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, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

<regex> Nedir?

<regex> başlığı, metni dize kümelerini tanımlayan düzenli ifadeler desenleriyle eşleştirmenizi sağlar. Bir desen oluşturur, ardından bu desenle metni test eder veya ararsınız.

  • std::regex derlenmiş bir deseni tutar.
  • Eşleştirme işlevleri, metnin desene uyup uymadığını bildirir.
#include <iostream>
#include <regex>

int main() {
    std::regex pattern("hello");
    std::cout << std::boolalpha << std::regex_match("hello", pattern) << '\n';
    return 0;
}

regex_match ve regex_search

regex_match, dizenin tamamının eşleşmesini gerektirir. regex_search ise desen dizenin herhangi bir yerinde bulunuyorsa başarılı olur.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat sat";
    std::cout << std::boolalpha;
    std::cout << "match: " << std::regex_match(s, p) << '\n';
    std::cout << "search: " << std::regex_search(s, p) << '\n';
    return 0;
}

Karakter Sınıfları

Köşeli parantezler izin verilen karakterlerden oluşan bir küme tanımlar. [aeiou] tek bir sesli harfle eşleşir; [a-z] gibi aralıklar küçük harflerle eşleşir.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[a-z]+");
    std::cout << std::boolalpha << std::regex_match("hello", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Niceleyiciler

Niceleyiciler tekrarı denetler: * sıfır veya daha fazla, + bir veya daha fazla, ? isteğe bağlı ve {n,m} bir sayı aralığı anlamına gelir.

#include <iostream>
#include <regex>

int main() {
    std::regex p("a+b");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("aaab", p) << '\n';
    std::cout << std::regex_match("b", p) << '\n';
    return 0;
}

Önceden Tanımlı Sınıflar

Kısaltma sınıfları yazma işini azaltır: \\d bir rakamla, \\w bir sözcük karakteriyle, \\s ise boşluk karakteriyle eşleşir. C++ kaynak kodunda ters eğik çizgi iki kez yazılır.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("12345", p) << '\n';
    std::cout << std::regex_match("12a45", p) << '\n';
    return 0;
}

Çapalar

Çapalar bir eşleşmeyi belirli bir konuma sabitler: ^ metnin başlangıcını, $ ise sonunu belirtir. Bunlar karakterlerle değil, konumlarla eşleşir.

#include <iostream>
#include <regex>

int main() {
    std::regex p("^abc$");
    std::cout << std::boolalpha;
    std::cout << std::regex_search("abc", p) << '\n';
    std::cout << std::regex_search("xabc", p) << '\n';
    return 0;
}

Alternatifleme

Dikey çubuk | "veya" anlamına gelir. cat|dog deseni iki sözcükten biriyle eşleşir. Kapsamını sınırlamak için parantezlerle grup oluşturun.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat|dog");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("cat", p) << '\n';
    std::cout << std::regex_match("dog", p) << '\n';
    std::cout << std::regex_match("fish", p) << '\n';
    return 0;
}

Özel Karakterleri Kaçışlama

., * ve ( gibi karakterlerin özel anlamları vardır. Bunları gerçek karakterler olarak eşleştirmek için ters eğik çizgiyle kaçışlayın.

#include <iostream>
#include <regex>

int main() {
    std::regex p("3\\.14");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("3.14", p) << '\n';
    std::cout << std::regex_match("3x14", p) << '\n';
    return 0;
}

Büyük-Küçük Harfe Duyarsız Eşleştirme

Eşleştirme sırasında harf büyüklüğünü göz ardı etmek için deseni oluştururken std::regex::icase gibi bir bayrak geçirin.

#include <iostream>
#include <regex>

int main() {
    std::regex p("hello", std::regex::icase);
    std::cout << std::boolalpha;
    std::cout << std::regex_match("HELLO", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Basit Bir Doğrulama

Desenler, isteğe bağlı işaret içeren temel bir sayıya benzediğini denetlemek gibi girdi biçimlerini doğrulamak için çok kullanışlıdır.

#include <iostream>
#include <regex>

bool isNumber(const std::string& s) {
    static const std::regex p("-?\\d+");
    return std::regex_match(s, p);
}

int main() {
    std::cout << std::boolalpha;
    std::cout << isNumber("-42") << '\n';
    std::cout << isNumber("4a2") << '\n';
    return 0;
}

Birden Çok Kez Eşleştirme

Harflerden oluşan ve ardından rakamların geldiği bir dizi gibi daha kapsamlı biçimleri doğrulamak için sınıfları ve niceleyicileri birleştirin.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[A-Za-z]+\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("abc123", p) << '\n';
    std::cout << std::regex_match("123abc", p) << '\n';
    return 0;
}

Kısa Kontrol

Eşleştirme ile arama arasındaki farkı ne kadar anladığınızı test edin.

Özet

<regex> temellerini öğrendiniz:

  • tam dize eşleşmeleri için regex_match, alt dize eşleşmeleri için regex_search
  • karakter sınıfları, niceleyiciler, çapalar ve alternatifleme
  • \\d gibi önceden tanımlı sınıflar ve özel karakterleri kaçışlama
  • icase gibi bayraklar

Sonraki bölümde yakalama gruplarını kullanarak bir eşleşmenin belirli bölümlerini çıkaracaksınız.

Sıkça Sorulan Sorular

“regex Temelleri” dersi ücretsiz mi?

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

“regex Temelleri” dersinde ne öğreneceğim?

Metindeki örüntüleri eşleştirin C++ 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.

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

Önceden deneyim gerekmez. CoddyKit'te C++ 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.

“regex 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 C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ 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 Temelleri
  2. Yakalama Grupları
  3. Arama ve Değiştirme
  4. Performans Notları
← C++ Academy Sayfasına Dön