Takeaways Key
Ekspresi biasa sering digunakan untuk melakukan carian, menggantikan substrings dan mengesahkan data rentetan. Artikel ini menyediakan petua, helah, sumber dan langkah untuk melalui ungkapan biasa yang rumit.
Jika anda tidak mempunyai skillet asas di bawah tali pinggang anda, anda boleh belajar Regex dengan panduan pemula kami. Sebagai arcane sebagai ungkapan biasa, ia tidak akan mengambil masa yang lama untuk mempelajari konsep -konsep tersebut.
Terdapat banyak buku, artikel, laman web yang menerangkan ungkapan biasa, jadi bukannya menulis penjelasan lain yang saya lebih suka pergi terus ke contoh yang lebih praktikal:
Anda boleh mencari lembaran cheat berguna di pautan ini. Bersama dengan pelbagai sumber yang berguna, terdapat juga video persidangan oleh Lea Verou di bahagian bawah jawatan ini - agak lama, tetapi ia sangat baik dalam memecahkan regex.
bagaimana membina regex yang baik
Ekspresi biasa sering digunakan dalam rutin harian pemaju - analisis log, membentuk pengesahan penyerahan, mencari dan menggantikan, dan sebagainya. Itulah sebabnya setiap pemaju yang baik harus tahu cara menggunakannya, tetapi apakah amalan terbaik untuk membina regex yang baik?
1. Tentukan senario
Menggunakan bahasa semulajadi untuk menentukan masalah ini akan memberi anda idea yang lebih baik tentang pendekatan untuk digunakan. Kata -kata boleh dan mesti, digunakan dalam definisi, berguna untuk menggambarkan kekangan atau dakwaan mandatori.
Berikut adalah contoh:
2. Membangunkan pelan
Setelah mempunyai definisi yang baik tentang masalah ini, kita dapat memahami jenis elemen yang terlibat dalam ekspresi biasa kita:
3. Melaksanakan/menguji/refactor
Sangat penting untuk mempunyai persekitaran ujian masa nyata untuk menguji dan meningkatkan ekspresi biasa anda. Terdapat laman web seperti regex101.com, regexr.com dan debuggex.com yang menyediakan beberapa persekitaran terbaik.
Untuk meningkatkan kecekapan regex, anda boleh cuba menjawab beberapa soalan tambahan ini:
Contoh praktikal
Matlamat contoh -contoh berikut bukan untuk menulis ungkapan yang hanya akan menyelesaikan masalah, tetapi untuk menulis ungkapan yang paling berkesan untuk kes -kes penggunaan tertentu, menggunakan unsur -unsur penting seperti rentang aksara, pernyataan, syarat, kumpulan dan sebagainya.
memadankan kata laluan
Senario:
^ menegaskan kedudukan pada permulaan rentetan
.* Memadankan mana -mana watak (kecuali Newline) antara sifar dan masa tanpa had
.* Memadankan mana -mana watak (kecuali Newline) antara sifar dan masa tanpa had
.* Memadankan mana -mana watak (kecuali Newline) antara sifar dan masa tanpa had
URL yang sepadan
Senario:
Corak:
^(http | https | ftp): [/] {2} ([a-z0-9-.]. [a-za-z] {2,4}) (: [0-9])? /? ([A-Za-Z0-9 -._?, '/\ & amp;%$#= ~]*)
Senario pertama cukup mudah untuk diselesaikan dengan ^(http | https | ftp): [/] {2}.
Untuk memadankan nama domain yang kita perlu ingat bahawa sah itu hanya boleh mengandungi huruf, digit, tanda hubung dan titik. Dalam contoh saya, saya mengehadkan bilangan aksara selepas tanda baca dari 2 hingga 4, tetapi boleh dilanjutkan untuk domain baru seperti .rocks atau .codes. Nama domain dipadankan dengan ([a-z0-9-.]. [A-za-z] {2,4}).
Spesifikasi port pilihan dipadankan dengan mudah (: [0-9])?.
URL boleh mengandungi pelbagai slash dan pelbagai aksara yang diulangi berkali-kali (lihat RFC3986), ini dipadankan dengan menggunakan pelbagai aksara dalam kumpulan ([a-z0-9 -._?, '/\ & Amp;%$ #= ~]*).
Ia benar -benar berguna untuk memadankan setiap elemen penting dengan penangkapan kumpulan (), kerana ia akan mengembalikan hanya perlawanan yang kita perlukan. Ingat bahawa watak -watak tertentu perlu dilepaskan.
Di bawah, setiap subpattern tunggal dijelaskan:
memadankan tag html
Senario:
Corak:
(.*?) 1>
Memadankan tag permulaan dan kandungan di dalamnya cukup mudah dengan Dan (.*?), Tetapi dalam corak di atas saya telah menambah sesuatu yang berguna: rujukan kepada kumpulan penangkapan.
Setiap kumpulan penangkapan yang ditakrifkan oleh kurungan () boleh dirujuk menggunakan nombor kedudukannya, (pertama) (kedua) (ketiga), yang akan membolehkan operasi selanjutnya.
Ungkapan di atas dapat dijelaskan sebagai:
Termasuk hanya dua kumpulan penangkapan dalam ungkapan, nama tag dan kandungan, akan mengembalikan perlawanan yang sangat jelas, senarai nama tag dengan kandungan yang berkaitan.
Mari menggali sedikit lebih mendalam dan terangkan subpatterns:
sepadan dengan kata -kata duplikat
Senario:
Corak:
b (w) b (? =.*1)
Ekspresi biasa ini seolah -olah mencabar tetapi menggunakan beberapa konsep yang ditunjukkan sebelumnya.
Corak memperkenalkan konsep sempadan perkataan.
Batasan perkataan B terutamanya memeriksa kedudukan. Ia sepadan apabila watak perkataan (i.e.: Abcde) diikuti oleh watak bukan perkataan (iaitu: -~,!).
Di bawah ini anda dapat mencari beberapa contoh penggunaan sempadan perkataan untuk menjadikannya lebih jelas:
- Memandangkan ungkapan ungkapan biasa adalah hebat
- perlawanan corak bareb adalah
- Corak W {3} B dapat sepadan dengan tiga huruf terakhir kata -kata: lar, ion, adalah, ome
Ungkapan di atas dapat dijelaskan sebagai:
Di bawah ini anda akan mendapat penjelasan untuk setiap corak sub:
Ekspresi akan lebih masuk akal jika kita mengembalikan semua perlawanan dan bukan hanya kembali yang pertama. Lihat fungsi PHP preg_match_all untuk maklumat lanjut.
Pemikiran Akhir
Ekspresi biasa adalah pedang bermata dua. Lebih banyak kerumitan ditambah, semakin sukar untuk menyelesaikan masalah ini. Itulah sebabnya, kadang -kadang, sukar untuk mencari ungkapan biasa yang akan sepadan dengan semua kes, dan lebih baik menggunakan beberapa regex yang lebih kecil.
Mempunyai senario masalah yang baik boleh sangat membantu, dan akan membolehkan anda mula memikirkan pelbagai watak, kekangan, dakwaan, pengulangan, nilai pilihan, dan lain -lain. Memberi perhatian lebih kepada penangkapan kumpulan akan menjadikan perlawanan berguna untuk pemprosesan selanjutnya. Jangan ragu untuk memperbaiki ungkapan dalam contoh, dan beritahu kami bagaimana anda melakukannya!
Sumber Berguna
Di bawah ini anda dapat mencari maklumat dan sumber lebih lanjut untuk membantu kemahiran regex anda berkembang.
Jangan ragu untuk menambah komen kepada artikel jika anda mendapati sesuatu yang berguna yang tidak disenaraikan.
lea verou - /reg (exp) {2}Lained/: Demystifying Expressions Regular
https://www.youtube.com/watch?v=eklues9rvak
perpustakaan php
Nama
Keterangan
RegexpBuilder
Mewujudkan regex menggunakan kaedah rantaian manusia yang boleh dibaca
Noonoofluentregex
Membina ungkapan regex menggunakan penetapan fasih dan istilah bahasa Inggeris seperti di atas
Hoaregex
Menyediakan alat untuk menganalisis regex dan menjana rentetan
Regex terbalik
Diberi ungkapan biasa akan menghasilkan rentetan
laman web
url
Keterangan
regex101.com
PCRE Online Regex Tester
regextester.com
PCRE Online Regex Tester
rexv.org
PCRE Online Regex Tester
debuggex.com
Menyokong PCRE dan menyediakan debugger visual yang sangat berguna
regexper.com
Javascript style regex, tetapi berguna untuk debug
phpliveregex.com
Penguji dalam talian untuk fungsi preg
regxlib.com
Pangkalan data ekspresi biasa yang sedia untuk digunakan
Regular-Erpressions.info
Tutorial Regex, Kajian Buku, Contoh
buku
Tajuk
Keterangan
Pengarang
editor
Menguasai ungkapan biasa
Mesti mempunyai buku regex
Jeffrey Friedl
O'Reilly
Rujukan Pocket Ekspresi Biasa
Ungkapan biasa untuk Perl, Ruby, PHP, Python, C, Java dan .NET
Tony Stubblebine
O'Reilly
Soalan Lazim (Soalan Lazim) Mengenai Ekspresi Biasa (Regex)
Apakah beberapa aplikasi praktikal ekspresi biasa (regex)? Mereka biasanya digunakan dalam pengesahan data untuk memastikan input pengguna sepadan dengan format tertentu, seperti alamat e -mel atau nombor telefon. Mereka juga boleh digunakan dalam mengikis web untuk mengekstrak kepingan maklumat tertentu dari laman web. Di samping itu, Regex boleh digunakan dalam pemprosesan teks untuk tugas -tugas seperti mencari dan menggantikan rentetan teks tertentu, memisahkan rentetan ke dalam pelbagai substrings, dan banyak lagi. ?
Mewujudkan ungkapan biasa yang kompleks melibatkan pemahaman dan menggabungkan pelbagai komponen regex. Ini termasuk literal, kelas watak, kuantifi, dan metacharacters. Dengan menggabungkan komponen ini dengan cara yang berbeza, anda boleh membuat ungkapan biasa yang sepadan dengan pelbagai corak. Sebagai contoh, anda boleh membuat ungkapan biasa yang sepadan dengan alamat e -mel, nombor telefon, atau URL.
Apakah beberapa kesilapan biasa untuk dielakkan apabila menggunakan ungkapan biasa (regex)? *), yang boleh menyebabkan hasil yang tidak dijangka. Satu lagi kesilapan biasa tidak dapat melepaskan watak khas apabila mereka dimaksudkan untuk ditafsirkan secara literal. Di samping itu, penting untuk diingat bahawa ungkapan biasa adalah sensitif kes secara lalai, jadi anda perlu menggunakan bendera yang sesuai jika anda ingin mengabaikan kes. >
Terdapat beberapa alat dalam talian yang tersedia yang membolehkan anda menguji ekspresi biasa anda. Alat ini biasanya membolehkan anda memasukkan ungkapan biasa dan rentetan ujian, dan kemudian mereka menyerlahkan bahagian -bahagian rentetan ujian yang sepadan dengan ungkapan biasa. Ini boleh menjadi cara terbaik untuk menyahpepijat ekspresi biasa anda dan memastikan mereka bekerja seperti yang diharapkan. ungkapan dalam beberapa bentuk. Walau bagaimanapun, sintaks khusus dan ciri yang disokong boleh berbeza -beza antara bahasa. Sebagai contoh, JavaScript, Python, dan Ruby semua menyokong ungkapan biasa, tetapi masing -masing mempunyai sintaks dan ciri unik mereka sendiri. Walaupun ungkapan biasa boleh menjadi sangat kuat, mereka juga boleh menjadi sumber yang berintensifkan jika tidak digunakan dengan betul. Ekspresi biasa kompleks boleh mengambil masa yang lama untuk melaksanakan, terutamanya pada rentetan teks yang besar. Oleh itu, penting untuk menggunakan ungkapan biasa dengan bijak dan mengoptimumkannya sebanyak mungkin. Ini termasuk mengelakkan kuantum yang tidak perlu, menggunakan kumpulan yang tidak menangkap apabila anda tidak memerlukan teks yang dipadankan, dan menggunakan kelas aksara dan bukannya penggantian jika mungkin. Di samping itu, beberapa enjin ekspresi biasa menawarkan ciri pengoptimuman, seperti kuantum malas, yang dapat meningkatkan prestasi. Tersedia untuk mempelajari lebih lanjut mengenai ungkapan biasa. Ini termasuk tutorial dalam talian, buku, dan platform pembelajaran interaktif. Di samping itu, banyak bahasa pengaturcaraan mempunyai dokumentasi yang luas mengenai sintaks dan ciri -ciri ekspresi biasa mereka. Untuk menghuraikan HTML atau XML, ia biasanya tidak disyorkan. Ini kerana HTML dan XML mempunyai struktur bersarang yang sukar untuk ditangkap dengan tepat dengan ungkapan biasa. Sebaliknya, biasanya lebih baik menggunakan parser HTML atau XML yang berdedikasi.Apakah beberapa alternatif untuk ekspresi biasa (regex)?
Walaupun ungkapan biasa sangat kuat, mereka tidak selalu menjadi alat terbaik untuk pekerjaan itu. Bergantung pada tugas di tangan, anda mungkin lebih baik menggunakan pendekatan yang berbeza. Sebagai contoh, untuk tugas manipulasi rentetan mudah, anda mungkin dapat menggunakan kaedah rentetan terbina dalam dan bukannya ungkapan biasa. Untuk menghidupkan HTML atau XML, anda biasanya akan menggunakan parser khusus. Dan untuk tugas pemprosesan teks yang kompleks, anda mungkin ingin mempertimbangkan menggunakan perpustakaan pemprosesan bahasa semulajadi.
Atas ialah kandungan terperinci Demystifying regex dengan contoh praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP menjadikannya mudah untuk membuat kandungan web interaktif. 1) Secara dinamik menjana kandungan dengan memasukkan HTML dan paparkannya dalam masa nyata berdasarkan input pengguna atau data pangkalan data. 2) Penyerahan borang proses dan menjana output dinamik untuk memastikan bahawa htmlspecialchars digunakan untuk mencegah XSS. 3) Gunakan MySQL untuk membuat sistem pendaftaran pengguna, dan gunakan kata laluan dan preprocessing untuk meningkatkan keselamatan. Menguasai teknik ini akan meningkatkan kecekapan pembangunan web.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna