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::regexderlenmiş 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çinregex_search - karakter sınıfları, niceleyiciler, çapalar ve alternatifleme
\\dgibi önceden tanımlı sınıflar ve özel karakterleri kaçışlamaicasegibi 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
- regex Temelleri
- Yakalama Grupları
- Arama ve Değiştirme
- Performans Notları