Mencari dan Menggantikan
Ubah teks dengan regex
Mencari dan Menggantikan ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
regex_replace
std::regex_replace mengembalikan rentetan baharu yang menggantikan setiap padanan corak dengan rentetan penggantian.
- Rentetan asal tidak berubah.
- Secara lalai, semua padanan digantikan.
#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;
}Menggantikan Angka
Corak memudahkan pengeditan besar-besaran, seperti menutup setiap angka dalam rentetan dengan ruang letak.
#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;
}Rujukan Balik dalam Penggantian
Gunakan $1, $2, ... dalam rentetan penggantian untuk memasukkan kumpulan yang ditangkap, sekali gus membolehkan Anda menyusun semula 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;
}Keseluruhan Padanan: $&
Token $& merujuk kepada keseluruhan padanan dan berguna untuk membungkus teks yang ditemui dengan aksara 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;
}Gantikan Padanan Pertama Sahaja
Hantarkan std::regex_constants::format_first_only untuk menggantikan padanan pertama sahaja, bukannya setiap kejadian.
#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 Ruang Kosong
Tugas pembersihan yang biasa ialah memadatkan rangkaian ruang kosong menjadi satu ruang.
#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;
}Mengalih Keluar Padanan
Menggantikan padanan dengan rentetan kosong secara berkesan memadamkan setiap padanan, yang berguna untuk membuang aksara yang tidak diingini.
#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;
}Memformat Semula Tarikh
Tangkap bahagian tarikh dan susun semula bahagian tersebut dalam penggantian untuk menukar format.
#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;
}Mengekalkan Teks yang Tidak Dipadankan
Secara lalai, teks yang tidak dipadankan disalin seperti biasa. Gunakan format_no_copy untuk mengeluarkan penggantian sahaja dan membuang selebihnya.
#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 Perkataan
Gabungkan alternasi dengan penggantian untuk menyensor senarai perkataan serentak.
#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;
}Membina Hasil
Oleh sebab regex_replace mengembalikan rentetan, Anda boleh merangkaikan transformasi dengan memasukkan satu hasil ke dalam panggilan seterusnya.
#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;
}Semakan Pantas
Uji pemahaman Anda tentang sintaks penggantian.
Ulang Kaji
Anda telah mempelajari cara mengubah teks dengan regex_replace:
- secara lalai, semua padanan digantikan dan rentetan baharu dikembalikan
$1,$2,$&memasukkan tangkapan dan keseluruhan padanan- bendera seperti
format_first_onlydanformat_no_copy - rangkaikan panggilan untuk membina pembersihan yang kompleks
Seterusnya, Anda akan mempelajari cara menggunakan regex dengan cekap dan mengelakkan perangkap prestasi yang biasa.
Pelajari C++ dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Mencari dan Menggantikan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Mencari dan Menggantikan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mencari dan Menggantikan”?
Ubah teks dengan regex Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Mencari dan Menggantikan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Asas regex
- Kumpulan Tangkapan
- Mencari dan Menggantikan
- Nota Prestasi