0Pricing
C++ Academy · Pelajaran

Pencarian dan Penggantian

Transformasikan teks dengan regex

Pencarian dan Penggantian adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

regex_replace

std::regex_replace mengembalikan string baru yang setiap pencocokan polanya diganti dengan string pengganti.

  • String asli tidak berubah.
  • Secara bawaan, semua pencocokan diganti.
#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;
}

Mengganti Angka

Pola memudahkan pengeditan secara massal, seperti menutupi setiap angka dalam string dengan penanda pengganti.

#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;
}

Referensi Balik dalam Penggantian

Gunakan $1, $2, ... dalam string pengganti untuk menyisipkan grup yang tertangkap, sehingga Anda dapat menyusun ulang teks.

#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;
}

Seluruh Pencocokan: $&

Token $& merujuk pada seluruh pencocokan dan berguna untuk membungkus teks yang ditemukan dengan karakter tambahan.

#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;
}

Hanya Mengganti yang Pertama

Teruskan std::regex_constants::format_first_only untuk mengganti hanya pencocokan pertama, bukan setiap kemunculan.

#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;
}

Menormalkan Spasi Kosong

Tugas pembersihan yang umum adalah memadatkan rangkaian spasi kosong menjadi satu spasi.

#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;
}

Menghapus Pencocokan

Mengganti dengan string kosong secara efektif menghapus setiap pencocokan dan berguna untuk menghilangkan karakter yang tidak diinginkan.

#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;
}

Mengubah Format Tanggal

Tangkap bagian-bagian tanggal, lalu susun ulang bagian tersebut dalam penggantian untuk mengubah formatnya.

#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;
}

Mempertahankan Teks yang Tidak Cocok

Secara bawaan, teks yang tidak cocok akan disalin. Gunakan format_no_copy untuk hanya menghasilkan penggantian dan membuang bagian lainnya.

#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;
}

Menyensor Kata

Gabungkan alternasi dengan penggantian untuk menyensor daftar kata sekaligus.

#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;
}

Membangun Hasil

Karena regex_replace mengembalikan string, Anda dapat merangkai transformasi dengan memasukkan satu hasil ke pemanggilan berikutnya.

#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;
}

Uji Cepat

Uji pemahaman Anda tentang sintaks penggantian.

Rangkuman

Anda telah mempelajari cara mengubah teks dengan regex_replace:

  • secara bawaan mengganti semua pencocokan dan mengembalikan string baru
  • $1, $2, $& menyisipkan tangkapan dan seluruh pencocokan
  • tanda seperti format_first_only dan format_no_copy
  • rangkai pemanggilan untuk membangun pembersihan yang kompleks

Selanjutnya, Anda akan mempelajari cara menggunakan ekspresi reguler secara efisien dan menghindari jebakan kinerja yang umum.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pencarian dan Penggantian” gratis?

Ya — teks lengkap “Pencarian dan Penggantian” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pencarian dan Penggantian”?

Transformasikan teks dengan regex Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pencarian dan Penggantian” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar regex
  2. Grup Penangkap
  3. Pencarian dan Penggantian
  4. Catatan Performa
← Kembali ke C++ Academy