Ungkapan biasa, yang biasanya dikenali sebagai Regex, mewakili salah satu sumber yang paling berkuasa dan serba boleh dalam dunia pembangunan, pentadbiran sistem dan pemprosesan volum besar teks. Walau bagaimanapun, bagi kebanyakan pengguna dan pengaturcara yang menghampirinya buat kali pertama, sintaksnya boleh menjadi membingungkan atau bahkan menggembirakan. Menguasai peraturan dan corak Regex membolehkan mencari, menapis, mengesahkan dan mengubah teks dengan kecekapan dan fleksibiliti yang tiada tandingan.
Pernahkah anda terfikir bagaimana anda boleh mencari corak kompleks dalam dokumen, mengesahkan borang, mengubah data atau mengautomasikan proses carian dalam projek IT anda? Sama ada anda seorang pembangun, sysadmin atau hanya pengguna yang ingin tahu, artikel ini adalah untuk anda. Bersedia untuk mendapatkan panduan lengkap, praktikal dan, terutama sekali, panduan yang jelas tentang peraturan Regex dan penggunaannya dalam semua jenis konteks.
Apakah peraturan Regex atau ungkapan biasa?
Ungkapan biasa (Regex, untuk singkatan dalam bahasa Inggeris of Regular Expression) ialah urutan atau corak watak yang mampu mentakrifkan peraturan untuk mencari, mengesahkan atau memanipulasi teks dalam teks lain. Bayangkan anda sedang mencari frasa tertentu, format khusus (seperti e-mel, tarikh, nombor telefon), nama yang memenuhi kriteria tertentu atau anda ingin menggantikan bahagian teks secara pukal: dalam semua kes ini, Regex ialah alat yang ideal.
Idea asasnya ialah Terangkan, dengan satu siri simbol, huruf dan operator khas, corak yang mesti dipenuhi oleh teks yang ingin kita cari, sahkan atau ubah suai.Sebagai contoh, jika anda ingin mencari semua nombor dalam frasa, anda boleh mentakrifkan corak mudah yang mengatakan "sebarang aksara angka" (seperti \d). Jika anda mahukan sesuatu yang lebih maju, anda boleh membina peraturan sekompleks: "semua rentetan yang bermula dengan 'Salin' dan berakhir dengan nombor."

Sejarah dan evolusi Regex
Ungkapan biasa dilahirkan pada pertengahan abad ke-20, dalam bidang logik formal dan teori automata. Penggunaan praktikal pertamanya adalah dalam sistem berasaskan UNIX, dengan utiliti seperti ed, grep, sed y awk. Seterusnya, piawaian POSIX mengembangkan sintaksnya dan memasukkannya ke dalam pelbagai persekitaran. Nanti bahasa Perl membawa Regex ke tahap baharu, menambah ciri baharu dan mempopularkannya dalam komuniti pembangun.
Pada masa ini, Regex terbina dalam kebanyakan bahasa pengaturcaraan (JavaScript, Python, Java, C#, PHP, Ruby, dll.), serta penyunting teks lanjutan, sistem pengendalian, rangka kerja web dan pelbagai utiliti baris perintah. Ini menjadikan peraturan Regex sebagai bahasa yang benar-benar universal untuk memproses teks dalam mana-mana konteks pengkomputeran.
Apakah peraturan Regex?
Peraturan regex bukan hanya untuk carian; mereka juga mengesahkan, mengekstrak, mengubah dan menapis atau mengubah suai volum besar data dalam beberapa saat.
- Mencari corak dalam teks besar: Cari e-mel, URL, nama, nombor, tarikh dan banyak lagi—walaupun dalam fail atau pangkalan data yang besar—tanpa usaha manual.
- Sahkan input pengguna: Semak sama ada kata laluan memenuhi keperluan, nombor telefon atau alamat e-mel adalah betul sebelum menyimpannya.
- Edit dan gantikan teks: Gantikan bahagian tertentu teks, daripada mengalih keluar teg HTML kepada menormalkan format data.
- Automasi proses: Tapis log, ubah senarai, analisis fail log atau namakan semula fail secara beramai-ramai mengikut peraturan yang sangat tepat.
Asas Regex: Konsep Asas
Peraturan regex terdiri daripada gabungan aksara literal dan aksara meta. Memahami elemen ini adalah asas untuk membina corak yang berguna.
1. Watak tersurat
Watak literal mewakili watak yang anda mahu cari. Contohnya, ungkapan rumah akan mencari dengan tepat urutan itu, dalam susunan itu, dalam teks sasaran.
2. Metacharacters: kuasa Regex
Metacharacter ialah simbol khas yang memanjangkan makna ungkapan biasa, memberikan mereka serba boleh dan kuasa. Yang paling biasa termasuk:
- . Titik mewakili mana-mana aksara kecuali pemisah baris.
- [] Kurungan mentakrifkan kelas atau set aksara yang dibenarkan.
- ^ Lingkaran boleh menandakan sama ada permulaan baris/perkataan, atau, jika ia disertakan dalam kurungan, penolakan set.
- $ Simbol dolar menunjukkan penghujung baris atau teks.
- * Asterisk membolehkan anda mencari "sifar atau lebih ulangan" elemen sebelumnya.
- + Tanda tambah mencari "satu atau lebih ulangan."
- ? Menunjukkan bahawa elemen sebelumnya adalah pilihan (sifar atau satu masa).
- () Tanda kurung mengumpulkan bahagian ungkapan untuk menggunakan pengkuantiti, mengekstrak subkumpulan atau mentakrifkan alternatif.
- | Bar menegak mewakili alternatif logik "atau".
- \ Garis miring ke belakang melarikan diri daripada maksud istimewa watak berikut atau memperkenalkan urutan yang disingkatkan (seperti \d, \w, \s).
3. Pengkuantiti: mengawal ulangan
Pengkuantiti membolehkan anda menentukan berapa kali aksara, kelas atau kumpulan harus diulang:
- *: Sifar atau lebih ulangan.
- +: Satu atau lebih kali.
- ?: Sekali atau tidak sama sekali (pilihan).
- {n}: Betul-betul n ulangan.
- {n,}: Sekurang-kurangnya n kali (tiada maksimum).
- {n,m}: Antara n y m ulangan.
4. Kelas watak dan singkatan
Kelas aksara membolehkan kami mengecilkan lagi perkara yang ingin kami cari:
- [az]: mana-mana huruf kecil.
- [AZ]: huruf besar.
- [0-9]: sebarang digit.
- [abc]: huruf a, b atau c.
- [^xyz]: mana-mana watak kecuali x, i z.
- \d: digit perpuluhan (bersamaan dengan [0-9]).
- \D: mana-mana watak yang tidak menjadi digit.
- \w: aksara perkataan (huruf, nombor atau garis bawah; bersamaan dengan [a-zA-Z0-9_]).
- \W: sebarang aksara bukan perkataan.
- \s: ruang putih (ruang, tab, pemisah baris).
- \S: sebarang watak selain daripada ruang.
5. Sauh: meletakkan corak dalam teks
Penambat membenarkan anda meletakkan corak pada permulaan atau penghujung baris, atau pada permulaan/akhir perkataan.
- ^: permulaan baris atau teks.
- $: hujung baris atau teks.
- \b: sempadan perkataan (mula atau tamat).
- \B: titik sempadan bukan perkataan (dalaman).
Contoh praktikal peraturan Regex
Sekarang mari kita lihat cara peraturan ini digunakan pada senario kehidupan sebenar, mudah dan lanjutan, supaya anda boleh mempraktikkan perkara yang telah anda pelajari dengan cepat.
- Sahkan e-mel: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
- Cari nombor DNI: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
- Kesan alamat IP v4: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
- Ekstrak URL daripada teg HTML:
- Kesan baris ulasan dalam Java: //[^\r\n]*[\r\n]
Logik lanjutan dan penyesuaian corak
Regex membolehkan anda membina corak kompleks dengan menggabungkan kumpulan, selang-seli, rujukan dan pengkuantiti lanjutan, membolehkan anda menapis, mengesahkan atau mencari maklumat yang sangat khusus.
Kumpulan dan persatuan
Dengan melampirkan sebahagian daripada corak dalam kurungan, kami mencipta kumpulan. Ini membolehkan kami menggunakan pengkuantiti pada keseluruhan kumpulan, mengekstrak maklumat atau subcorak rujukan.
Sebagai contoh, ungkapan ((ma)+b) akan sepadan dengan "mab" atau "mamab", tetapi bukan "maab". Kumpulan boleh dirujuk kemudian menggunakan \1, \2, dsb., sesuai untuk mencari corak berulang yang serupa.
Alternatif (|): logik "atau" dalam Regex
Bar menegak | membolehkan anda menentukan alternatif: mana-mana corak yang dipisahkan oleh simbol ini akan sah. Contohnya, (lelaki|perempuan) akan memadankan kedua-dua perkataan.
Melarikan watak meta dengan \
Serangan ke belakang \ Adalah penting untuk meneutralkan makna istimewa metacharacter atau memperkenalkan urutan yang disingkatkan. Contohnya, "\." mencari noktah literal, “\?” untuk tanda soal, "\\" untuk garis miring terbalik itu sendiri, dsb.
Pengkuantiti yang tamak dan malas
Secara lalai, pengkuantiti Regex tamak: mereka mengambil sebanyak mungkin teks. Menambah ? Ia ditukar kepada "malas", yang menangkap minimum yang diperlukan.
Sebagai contoh: anjing akan mencari rentetan terpanjang antara "perr" dan "o", manakala anjing akan menangkap minimum.
Pernyataan dan pandangan sekeliling
Penegasan pandang ke hadapan dan belakang membolehkan anda mengesahkan syarat "sebelum" atau "selepas" padanan tanpa menggunakan aksara daripada teks.
- Pandangan positif: (?=corak) Semak bahawa "corak" ditemui selepas kedudukan semasa.
- Pandangan negatif: (?!corak) Semak bahawa "corak" TIDAK hadir di bawah.
- Pandangan positif/negatif di belakang: (?<=corak) y (? Mereka melakukan perkara yang sama "ke belakang."
Aplikasi praktikal Regex dalam dunia sebenar
Regex digunakan dalam pelbagai bidang dan tugas harian:
- Pengesahan borang: e-mel, nombor telefon, nama, kata laluan yang kukuh.
- Pemprosesan log dan pengauditan sistem: Mencari corak dalam fail log, mengekstrak ralat dan amaran.
- SEO dan pengurusan URL: Penulisan semula URL dalam .htaccess, penapis parameter, pembahagian carian.
- Pengeditan teks pukal: Bersihkan teg HTML, alih keluar ruang yang berlebihan, normalkan data dalam hamparan, sesuaikan kod warisan.
- Pembangunan web dan automasi: ujian automatik, konfigurasi peraturan pelayan, pembangunan pengikis.
Perisa dan enjin Regex yang berbeza
Tidak semua pelaksanaan Regex menyokong keupayaan yang sama; terdapat "rasa" yang berbeza bergantung pada bahasa, alat atau enjin yang digunakan.
- POSIX: Sintaks primordial berdasarkan UNIX. Kurang luas daripada Perl atau PCRE.
- Perl/PCRE: Sangat lengkap, mereka menyokong carian, rujukan lanjutan, pengubah suai dan subrutin.
- JavaScript: Digunakan secara meluas di web, serasi dengan kebanyakan pengendali, tetapi terdapat pengehadan di belakang (kecuali versi moden).
- .NET dan bahasa lain: Mereka biasanya serasi dengan PCRE, tetapi sentiasa dinasihatkan untuk merujuk dokumentasi bahasa itu sendiri.
Oleh itu, apabila anda akan bekerja dalam konteks tertentu, semak sokongan dan sintaks yang diterima Regex dalam alat atau bahasa itu.
Bagaimana untuk menguji dan membina corak Regex anda sendiri
Cara terbaik untuk mempelajari Regex ialah berlatih dengan contoh dan menggunakan alat ujian langsung yang tersedia di web.
- regex101.com: membolehkan anda menulis corak, menyemak keputusan, melihat penjelasan dan statistik prestasi.
- regexr.com: : pilihan bantuan langkah demi langkah yang hebat, grafik visual dan contoh interaktif.
- Penjelas visual dan penjana kod: sesuai untuk memahami corak yang kompleks dan menjana ungkapan dari awal.
- Permainan dan amalan dalam talian: Belajar dengan bermain dan selesaikan cabaran sebenar untuk menghayati cara Regex berfungsi.
Kesilapan biasa dan petua praktikal untuk menguasai Regex
Regex berkuasa, tetapi ia juga boleh mengelirukan. Petua ini akan membantu anda mengelakkan perangkap biasa:
- Melarikan diri metakarakter apabila anda mencari nilai literalnya. Sebagai contoh, gunakan \. untuk perkara itu, \* untuk asterisk, \? untuk soal siasat.
- Jangan terlalu menggunakan noktah (.) dan kad bebas .*. Mereka sangat berguna, tetapi mereka boleh mengembalikan hasil yang tidak diingini jika anda tidak menentukan corak anda dengan baik.
- Tambahkan sauh (^, $) apabila anda ingin mengehadkan corak pada permulaan atau penghujung baris dan elakkan padanan separa.
- Gunakan pengkuantiti tertentu apabila mencari ulangan tepat, bukannya bergantung sepenuhnya pada * atau +.
- Sentiasa mencuba dengan contoh positif dan negatif. Dengan cara ini anda boleh mengesan sama ada corak meliputi semua kes yang diperlukan tanpa menghasilkan positif palsu.
- Pecah dan perintah: Jika anda mempunyai corak yang sangat kompleks, binanya dalam bahagian dan gabungkan serpihan pada penghujungnya.
- Jangan ragu untuk menyemak helaian cheat, dokumentasi dan forum. untuk melihat contoh dan helah harian.
Mengintegrasikan Regex ke dalam bahasa pengaturcaraan dan alatan
Regex disepadukan ke dalam fungsi yang paling biasa bagi semua bahasa utama. Beberapa contoh:
- JavaScript: Kaedah ujian (), exec () daripada objek RegExp dan kaedah perlawanan(), cari (), ganti (), berpecah () daripada String.
- Ular sawa: Modul ini re menyediakan fungsi seperti cari (), perlawanan(), findall(), sub(), Dll
- PHP: fungsi preg_match (), preg_replace(), preg_split() dan lain-lain
- BERSIH: Clase regex dengan kaedah lanjutan dan sokongan PCRE.
Dalam editor seperti VSCode, Sublime, Atom atau Notepad++, anda juga boleh menggunakan Regex untuk mencari dan menggantikan. Dan pada sistem UNIX, utiliti seperti grep, sed y awk menggabungkan enjin Regex mereka sendiri.
Regex dalam pengurusan SEO dan URL
Regex ialah komponen utama untuk pengoptimuman URL, penghalaan web dan pengurusan parameter dinamik pada platform seperti WordPress, Joomla dan e-dagang.
- .htaccess dan mod_rewrite: Ia membenarkan anda menukar URL yang hodoh dan dipenuhi parameter kepada alamat mesra dengan peraturan Regex. dengan cara ini,
www.ejemplo.com/index.php?p=123boleh diubah menjadiwww.ejemplo.com/articulo/titulo-amigable, yang meningkatkan kedua-dua SEO dan pengalaman pengguna. - Penapisan parameter: Ekstrak, bersihkan atau ubah parameter dalam URL untuk menyesuaikan hasil kepada konteks carian yang berbeza.
Menggunakan peraturan Regex, juruweb boleh mencipta corak penulisan semula yang mengenal pasti dan mengubah suai komponen URL untuk meningkatkan struktur, pengoptimuman dan pemahaman oleh enjin carian dan pengguna.
Ungkapan Biasa Lanjutan: Teknik dan Sumber
Regex bukan sahaja menyokong carian langsung; ia menyokong kumpulan bersyarat, subrutin, rekursi, rujukan belakang dan banyak lagi. Ini menjadikannya alat penting untuk tugas yang kompleks.
- Subrutin dan rujukan belakang: Ia membolehkan anda mencari corak berulang, simetri, jujukan dan pengesahan yang sangat spesifik.
- Syarat-syarat: Jalankan carian atau pengesahan yang berbeza berdasarkan perkara yang telah ditangkap dalam kumpulan sebelumnya.
- Rekursi: Sesetengah enjin lanjutan membolehkan anda menentukan corak yang digunakan pada diri mereka sendiri, yang sangat berguna apabila memproses data berstruktur seperti XML atau JSON.
- Pengubah suai global: (/g, /i, /m dalam Perl/JavaScript) membenarkan carian global, tidak sensitif huruf besar atau berbilang baris.
Sumber penting untuk mempelajari Regex
Jika anda ingin mengembangkan pengetahuan anda, sumber ini akan berguna:
- Wikipedia: Penerangan terperinci teori dan teknikal.
- Regular-Expressions.info: Rujukan dan tutorial untuk semua peringkat.
- Helaian tipu: Ringkasan pantas semua pengendali, kumpulan dan peraturan yang paling biasa.
- Tutorial interaktif: Latihan langsung dengan latihan dan maklum balas segera.
- Komuniti dan forum: Belajar daripada pengguna lain, tanya soalan dan kongsi petua peribadi anda.
Pembelajaran Regex menawarkan kelebihan hebat dalam pengurusan dan pemprosesan teks, membolehkan carian, pengesahan, transformasi dan automasi yang lebih cekap. Dengan konsisten dan amalan, menulis corak regex menjadi lebih mudah dan lebih semula jadi. Manfaatkan alatan dalam talian dan latihan praktikal, mulakan dengan contoh mudah dan maju ke corak yang lebih kompleks. Sebaik sahaja anda menguasai prinsipnya, Regex akan menjadi tambahan semula jadi kepada pembangunan dan sistem pentadbiran senjata anda, memudahkan tugasan yang sebelum ini mungkin kelihatan rumit atau membosankan.