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_onlydanformat_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
- Dasar-Dasar regex
- Grup Penangkap
- Pencarian dan Penggantian
- Catatan Performa