0Pricing
C++ Academy · Ders

Arama ve Değiştirme

Metni regex ile dönüştürün

Arama ve Değiştirme, CoddyKit'te ücretsiz bir C++ 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, 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_replace

std::regex_replace, bir desenin her eşleşmesinin değiştirme dizesiyle değiştirildiği yeni bir dize döndürür.

  • Özgün dize değiştirilmeden kalır.
  • Varsayılan olarak tüm eşleşmeler değiştirilir.
#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat and the cat";
    std::cout << std::regex_replace(s, p, "dog") << '\n';
    return 0;
}

Rakamları Değiştirme

Desenler, bir dizedeki her rakamı bir yer tutucuyla maskelemek gibi toplu düzenlemeleri kolaylaştırır.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d");
    std::string s = "PIN 1234";
    std::cout << std::regex_replace(s, p, "*") << '\n';
    return 0;
}

Değiştirmede Geri Başvurular

Metni yeniden düzenlemek için yakalanan grupları değiştirme dizesine eklemek üzere $1, $2, ... kullanın.

#include <iostream>
#include <regex>

int main() {
    std::regex p("(\\w+) (\\w+)");
    std::string s = "John Smith";
    std::cout << std::regex_replace(s, p, "$2 $1") << '\n';
    return 0;
}

Eşleşmenin Tamamı: $&

$& belirteci eşleşmenin tamamını ifade eder; bulunan metni ek karakterlerle çevrelemek için kullanışlıdır.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::string s = "item 42";
    std::cout << std::regex_replace(s, p, "[$&]") << '\n';
    return 0;
}

Yalnızca İlkini Değiştirme

Her oluşum yerine yalnızca ilk eşleşmeyi değiştirmek için std::regex_constants::format_first_only geçirin.

#include <iostream>
#include <regex>

int main() {
    std::regex p("o");
    std::string s = "foo boo";
    auto out = std::regex_replace(s, p, "0", std::regex_constants::format_first_only);
    std::cout << out << '\n';
    return 0;
}

Boşlukları Normalleştirme

Yaygın bir temizleme görevi, art arda gelen boşluk karakterlerini tek bir boşluğa indirmektir.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\s+");
    std::string s = "too    many     spaces";
    std::cout << std::regex_replace(s, p, " ") << '\n';
    return 0;
}

Eşleşmeleri Kaldırma

Boş bir dizeyle değiştirmek, her eşleşmeyi etkili bir şekilde siler; bu yöntem istenmeyen karakterleri ayıklamak için kullanışlıdır.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[^a-zA-Z]");
    std::string s = "a1b2c3";
    std::cout << std::regex_replace(s, p, "") << '\n';
    return 0;
}

Tarihleri Yeniden Biçimlendirme

Biçimi değiştirmek için bir tarihin bölümlerini yakalayın ve değiştirme metninde yeniden sıralayın.

#include <iostream>
#include <regex>

int main() {
    std::regex p("(\\d{4})-(\\d{2})-(\\d{2})");
    std::string s = "2026-05-30";
    std::cout << std::regex_replace(s, p, "$3/$2/$1") << '\n';
    return 0;
}

Eşleşmeyen Metni Koruma

Varsayılan olarak eşleşmeyen metin olduğu gibi kopyalanır. Yalnızca değiştirmeleri çıktılamak ve geri kalanını atmak için format_no_copy kullanın.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::string s = "a1b2c3";
    auto out = std::regex_replace(s, p, "$&", std::regex_constants::format_no_copy);
    std::cout << out << '\n';
    return 0;
}

Sözcükleri Sansürleme

Bir sözcük listesini tek seferde sansürlemek için alternatiflemeyi değiştirmeyle birleştirin.

#include <iostream>
#include <regex>

int main() {
    std::regex p("bad|evil");
    std::string s = "a bad and evil idea";
    std::cout << std::regex_replace(s, p, "***") << '\n';
    return 0;
}

Sonucu Adım Adım Oluşturma

regex_replace bir dize döndürdüğü için, bir çağrının sonucunu sonraki çağrıya aktararak dönüşümleri zincirleyebilirsiniz.

#include <iostream>
#include <regex>

int main() {
    std::string s = "  Hello,   World  ";
    s = std::regex_replace(s, std::regex("\\s+"), " ");
    s = std::regex_replace(s, std::regex("^ | $"), "");
    std::cout << "[" << s << "]\n";
    return 0;
}

Kısa Kontrol

Değiştirme söz dizimini ne kadar anladığınızı test edin.

Özet

regex_replace ile metni nasıl dönüştüreceğinizi öğrendiniz:

  • varsayılan olarak tüm eşleşmeleri değiştirir ve yeni bir dize döndürür
  • $1, $2, $& yakalanan grupları ve eşleşmenin tamamını ekler
  • format_first_only ve format_no_copy gibi bayraklar
  • karmaşık temizlemeler oluşturmak için çağrıları zincirleme

Sonraki bölümde regex'i verimli kullanmayı ve yaygın performans tuzaklarından kaçınmayı öğreneceksiniz.

Sıkça Sorulan Sorular

“Arama ve Değiştirme” dersi ücretsiz mi?

Evet — “Arama ve Değiştirme” 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.

“Arama ve Değiştirme” dersinde ne öğreneceğim?

Metni regex ile dönüştürün 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 3. dersidir.

“Arama ve Değiştirme” 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