Rumah > Artikel > pembangunan bahagian belakang > Ungkapan biasa dalam C++ dan teknik aplikasinya
Dalam pembangunan C++, ungkapan biasa ialah alat yang sangat berguna. Menggunakan ungkapan biasa, anda boleh melakukan operasi dengan mudah seperti padanan dan carian pada rentetan. Artikel ini akan memperkenalkan ungkapan biasa dalam C++ dan teknik aplikasinya untuk membantu pembaca menggunakan ungkapan biasa dengan lebih baik untuk menyelesaikan masalah pembangunan.
1. Pengenalan kepada ungkapan biasa
Ungkapan biasa ialah corak yang terdiri daripada set aksara, digunakan untuk memadankan rentetan dengan peraturan tertentu. Ungkapan biasa biasanya terdiri daripada metakarakter, kelayakan dan aksara. Antaranya, metacharacter mempunyai makna khas dan digunakan untuk mewakili jenis aksara, dan qualifier digunakan untuk menentukan bilangan kali watak muncul berulang kali. Watak boleh mewakili watak biasa atau watak istimewa.
Dalam C++, gunakan fail pengepala 8b2d503d09b38f6c300ed08e7e08a623 untuk melaksanakan fungsi ungkapan biasa. Berikut ialah beberapa aksara meta dan kelayakan yang biasa digunakan:
Padan dengan mana-mana watak.
^ sepadan dengan permulaan rentetan.
$ sepadan dengan hujung rentetan.
2. Aplikasi ungkapan biasa
Ungkapan biasa boleh digunakan dalam banyak senario dalam C++, seperti:
Menggunakan ungkapan biasa boleh memadankan rentetan dengan peraturan tertentu dengan mudah. Contohnya, program contoh berikut akan memadankan semua aksara:
#include <iostream> #include <regex> using namespace std; int main() { regex reg("a"); string str = "apple banana"; sregex_iterator it(str.begin(), str.end(), reg); sregex_iterator end; while (it != end) { smatch match = *it; cout << match.str() << endl; it++; } return 0; }
Menggunakan ungkapan biasa, anda juga boleh mencari dan menggantikan kandungan dalam rentetan dengan mudah. Program contoh berikut akan menggantikan semua aksara dengan aksara b:
#include <iostream> #include <regex> using namespace std; int main() { regex reg("a"); string str = "apple banana"; string newstr = regex_replace(str, reg, "b"); cout << newstr; return 0; }
Dalam pembangunan laman web, selalunya perlu untuk mengesahkan borang yang diserahkan oleh pengguna untuk memastikan data input berada dalam format yang betul. Ungkapan biasa boleh mencapai fungsi ini dengan mudah. Contohnya, program contoh berikut akan menentukan sama ada input pengguna ialah alamat e-mel:
#include <iostream> #include <regex> using namespace std; bool is_valid_email(string email) { regex reg("\w+@(\w+\.)+[a-zA-Z]+"); return regex_match(email, reg); } int main() { string email1 = "hello@gmail.com"; string email2 = "hello@gmail"; cout << is_valid_email(email1) << endl; cout << is_valid_email(email2) << endl; return 0; }
Semasa operasi sistem, sejumlah besar maklumat log akan dijana. Ungkapan biasa memudahkan untuk menganalisis mesej log ini. Sebagai contoh, program contoh berikut akan mengeluarkan semua baris dalam log yang mengandungi rentetan ralat:
#include <iostream> #include <fstream> #include <regex> using namespace std; int main() { ifstream fin("log.txt"); regex reg(".*error.*"); string line; while (getline(fin, line)) { if (regex_match(line, reg)) { cout << line << endl; } } fin.close(); return 0; }
3. Petua
Apabila menggunakan ungkapan biasa, anda perlu memberi perhatian kepada perkara berikut:
Dalam C++, backslash () ialah watak khas yang digunakan untuk melarikan diri daripada watak lain. Untuk memadankan aksara garisan belakang sebenar, gunakan dua aksara garisan belakang () dalam ungkapan biasa. Contohnya, untuk memadankan garis miring ke belakang sebenar, gunakan ungkapan biasa "".
Susunan padanan dalam ungkapan biasa biasanya dari kiri ke kanan. Oleh itu, perhatikan susunan padanan untuk memastikan rentetan yang betul dipadankan.
Dalam C++, terdapat dua fungsi yang boleh digunakan untuk memadankan rentetan: padanan dan regex_match. Perbezaannya ialah fungsi padanan hanya boleh memadankan bahagian awalan rentetan, manakala fungsi regex_match boleh memadankan keseluruhan rentetan. Oleh itu, untuk kebanyakan kes, adalah disyorkan untuk menggunakan fungsi regex_match.
Apabila melakukan padanan rentetan, adalah disyorkan untuk menggunakan sregex_iterator untuk melintasi hasil padanan. Iterator ini boleh menyimpan semua hasil yang sepadan dalam bekas untuk memudahkan operasi seterusnya.
Ringkasan
Artikel ini memperkenalkan ungkapan biasa dalam C++ dan teknik aplikasinya. Menggunakan ungkapan biasa, anda boleh melakukan operasi dengan mudah seperti padanan dan carian pada rentetan. Pembaca boleh menggunakan ungkapan biasa dengan lebih baik untuk menyelesaikan masalah pembangunan berdasarkan keperluan sebenar mereka, digabungkan dengan kod sampel dalam artikel ini.
Atas ialah kandungan terperinci Ungkapan biasa dalam C++ dan teknik aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!