Dasar-Dasar regex
Cocokkan pola dalam teks
Dasar-Dasar regex adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Apa Itu <regex>?
Header <regex> memungkinkan Anda mencocokkan teks dengan pola ekspresi reguler yang mendeskripsikan himpunan string. Anda membuat sebuah pola, lalu menguji atau mencari teks dengannya.
std::regexmenyimpan pola yang telah dikompilasi.- Fungsi pencocokan melaporkan apakah teks sesuai.
#include <iostream>
#include <regex>
int main() {
std::regex pattern("hello");
std::cout << std::boolalpha << std::regex_match("hello", pattern) << '\n';
return 0;
}regex_match vs regex_search
regex_match mengharuskan seluruh string cocok. regex_search berhasil jika pola muncul di mana pun dalam string.
#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;
}Kelas Karakter
Tanda kurung siku mendefinisikan himpunan karakter yang diizinkan. [aeiou] mencocokkan satu vokal apa pun; rentang seperti [a-z] mencocokkan huruf kecil.
#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;
}Kuantifikator
Kuantifikator mengatur pengulangan: * nol kali atau lebih, + satu kali atau lebih, ? opsional, dan {n,m} rentang jumlah.
#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;
}Kelas Pradefinisi
Kelas singkat menghemat pengetikan: \\d mencocokkan angka, \\w karakter kata, dan \\s spasi kosong. Dalam sumber C++, garis miring terbalik ditulis dua kali.
#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;
}Jangkar
Jangkar menetapkan pencocokan pada suatu posisi: ^ menandai awal dan $ menandai akhir teks. Jangkar mencocokkan posisi, bukan karakter.
#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;
}Alternasi
Garis vertikal | berarti atau. Pola cat|dog mencocokkan salah satu dari kedua kata tersebut. Gunakan tanda kurung untuk membatasi cakupannya.
#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;
}Meloloskan Karakter Khusus
Karakter seperti ., *, dan ( memiliki makna khusus. Dahului karakter tersebut dengan garis miring terbalik agar dicocokkan secara literal.
#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;
}Pencocokan Tanpa Membedakan Huruf Besar-Kecil
Teruskan tanda seperti std::regex::icase saat membuat pola untuk mengabaikan besar-kecil huruf selama pencocokan.
#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;
}Validasi Sederhana
Pola sangat berguna untuk memvalidasi format masukan, misalnya memeriksa apakah sebuah string tampak seperti angka dasar dengan tanda opsional.
#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;
}Mencocokkan Beberapa Kali
Gabungkan kelas dan kuantifikator untuk memvalidasi format yang lebih kaya, seperti urutan huruf yang diikuti angka.
#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;
}Uji Cepat
Uji pemahaman Anda tentang perbedaan pencocokan dan pencarian.
Rangkuman
Anda telah mempelajari dasar-dasar <regex>:
regex_matchuntuk seluruh string,regex_searchuntuk pencocokan bagian string- kelas karakter, kuantifikator, jangkar, dan alternasi
- kelas pradefinisi seperti
\\dserta cara meloloskan karakter khusus - tanda seperti
icase
Selanjutnya, Anda akan mengekstrak bagian tertentu dari pencocokan menggunakan grup penangkap.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-Dasar regex” gratis?
Ya — teks lengkap “Dasar-Dasar regex” 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 “Dasar-Dasar regex”?
Cocokkan pola dalam teks 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 1 dari 4.
Berapa lama pelajaran “Dasar-Dasar regex” 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