Ekspresi reguler adalah pola literal yang terdiri dari karakter biasa (seperti karakter A hingga Z) dan karakter khusus (disebut metacharacters ). Pola ini menggambarkan satu atau lebih string yang harus dicocokkan saat mencari badan teks. Ekspresi reguler bertindak sebagai templat untuk mencocokkan pola karakter dengan string yang dicari.
Berikut adalah beberapa contoh ekspresi reguler yang mungkin Anda temui:
| Jscript | Vbscript | cocok |
|---|---|---|
| /^/[/t]*$/ | ^ /[ /t]*$ | Cocokkan garis kosong. |
| // d {2}-/d {5}/ | /d {2}-/d {5} | Pastikan nomor ID terdiri dari nomor 2 digit, tanda hubung, dan nomor 5 digit. |
| /<(.*)>.*<///1>/ | <(.*)>.*</// 1> | Cocokkan tag HTML. |
Tabel berikut adalah daftar lengkap metacharacters dan perilaku mereka dalam konteks ekspresi reguler:
| karakter | menggambarkan |
|---|---|
| / | Tandai karakter berikutnya sebagai karakter khusus, atau karakter primitif, atau referensi mundur, atau karakter pelarian oktal. Misalnya, 'n' cocok dengan karakter n. '/n' cocok dengan karakter garis baru. Urutan '//' cocok /dan /(cocok (. |
| ^ | Cocok dengan posisi mulai dari string input. Jika properti multilin dari objek RegExp diatur, ^ juga cocok dengan posisi setelah '/n' atau '/r'. |
| $ | Cocok dengan posisi akhir dari string input. Jika properti multilin dari objek RegExp diatur, $ juga cocok dengan posisi sebelum '/n' atau '/r'. |
| * | Cocok dengan subspresi nol sebelumnya atau beberapa kali. Misalnya, Zo* dapat mencocokkan Z dan Zoo. * setara dengan {0,}. |
| + | Cocok dengan subekspresi sebelumnya sekali atau lebih kali. Misalnya, 'Zo+' dapat mencocokkan Zo dan Zoo, tetapi tidak z. + setara dengan {1,}. |
| ? | Cocok dengan Subekspresi Nol sebelumnya atau sekali. Misalnya, lakukan (es)? ? |
| { N } | N adalah bilangan bulat non-negatif. Cocokkan N kali yang ditentukan. Misalnya, 'o {2}' tidak dapat cocok dengan 'O' di Bob, tetapi dapat mencocokkan dua OS dalam makanan. |
| { N ,} | N adalah bilangan bulat non-negatif. Cocokkan setidaknya N kali. Misalnya, 'o {2,}' tidak bisa cocok dengan 'o' di Bob, tetapi dapat mencocokkan semua OS di foooood. 'o {1,}' setara dengan 'O+'. 'o {0,}' setara dengan 'o*'. |
| { n , m } | Baik M dan N adalah bilangan bulat non-negatif, di mana n <= m . Cocokkan setidaknya N kali dan cocok dengan M kali. Liu, o {1,3} akan cocok dengan tiga OS pertama di fooooood. 'o {0,1}' setara dengan 'o?'. Harap dicatat bahwa tidak mungkin ada ruang antara koma dan dua angka. |
| ? | Pola pencocokan adalah non-greedy ketika karakter segera diikuti oleh karakter pembatasan lainnya (*, +, ?, { n }, { n ,}, { n , m }). Pola non-greedy cocok dengan string sesedikit mungkin, sedangkan pola serakah default cocok dengan string sebanyak mungkin. Misalnya, untuk string oooo, 'o+?' |
| . | Cocokkan karakter tunggal kecuali /n. Untuk mencocokkan karakter apa pun termasuk '/n', gunakan pola seperti '[./n]'. |
| ( pola ) | Pola cocok dan dapatkan pertandingan ini. Kecocokan yang diperoleh dapat diperoleh dari koleksi pertandingan yang dihasilkan, menggunakan koleksi pengiriman di VBScript, dan menggunakan atribut $ 0 ... $ 9 di JScript. Untuk mencocokkan karakter kurung, gunakan '/(' atau '/)'. |
| (?: pola ) | Pola pencocokan tetapi jangan mendapatkan hasil yang cocok, yaitu, ini adalah kecocokan yang tidak dapat disimpan dan tidak disimpan untuk penggunaan di masa depan. Ini berguna saat menggunakan atau karakter (|) untuk menggabungkan berbagai bagian pola. Misalnya, 'industri (?: y | ies) adalah ekspresi yang lebih sederhana daripada' industri | Industri '. |
| (? = pola ) | Maju pra-periksa, cocokkan string pencarian di awal pola pencocokan string apa pun. Ini adalah kecocokan non-get, yaitu pertandingan tidak perlu diambil untuk digunakan nanti. Misalnya, 'Windows (? = 95 | 98 | NT | 2000)' dapat mencocokkan Windows di Windows 2000, tetapi bukan Windows di Windows 3.1. Pra-periksa tidak mengkonsumsi karakter, yaitu, setelah pertandingan terjadi, pencarian pertandingan berikutnya dimulai segera setelah pertandingan terakhir, daripada setelah karakter yang berisi pra-pengecekan. |
| (?! pola ) | Lookahead negatif cocok dengan string pencarian di mana pun di mana string yang tidak cocok dengan pola . Ini adalah kecocokan non-get, yaitu pertandingan tidak perlu diambil untuk digunakan nanti. Misalnya, 'Windows (?! 95 | 98 | NT | 2000)' dapat mencocokkan Windows di Windows 3.1, tetapi bukan Windows di Windows 2000. Pra-periksa tidak mengkonsumsi karakter, yaitu, setelah pertandingan terjadi, pencarian pertandingan berikutnya dimulai segera setelah pertandingan terakhir, daripada setelah karakter yang berisi pra-periksa |
| x | | Cocokkan x atau y . Misalnya, 'z | makanan' dapat cocok dengan z atau makanan. '(z | f) ood' cocok dengan zood atau makanan. |
| [ xyz ] | Koleksi Karakter. Cocokkan karakter apa pun yang terkandung. Misalnya, '[ABC]' dapat mencocokkan 'A' di polos. |
| [^ xyz ] | Kumpulan karakter nilai negatif. Cocokkan karakter apa pun yang tidak termasuk. Misalnya, '[^abc]' dapat mencocokkan 'p' di polos. |
| [ AZ ] | Rentang karakter. Cocokkan karakter apa pun dalam kisaran yang ditentukan. Misalnya, '[az]' dapat mencocokkan karakter alfabet kecil dalam kisaran 'a' hingga 'z'. |
| [^ az ] | Kisaran karakter nilai negatif. Cocokkan karakter sewenang -wenang yang tidak berada dalam kisaran yang ditentukan. Misalnya, '[^az]' dapat mencocokkan karakter sewenang -wenang yang tidak ada dalam kisaran 'a' hingga 'z'. |
| /B | Cocokkan batas kata, yang berarti posisi antara kata dan ruang. Misalnya, 'er/b' dapat mencocokkan 'er' tidak pernah, tetapi tidak 'er' dalam kata kerja. |
| /B | Cocokkan batas non-kata. 'er/b' dapat mencocokkan 'er' dalam kata kerja, tetapi tidak bisa mencocokkan 'er' tidak pernah. |
| /c x | Cocok dengan karakter kontrol yang ditentukan oleh x . Misalnya, /cm cocok dengan control-M atau carriage return. Nilai x harus salah satu dari AZ atau AZ. Jika tidak, perlakukan C sebagai karakter 'C' asli. |
| /D | Cocokkan karakter numerik. Setara dengan [0-9]. |
| /D | Cocokkan karakter non-numerik. Setara dengan [^0-9]. |
| /F | Cocokkan istirahat halaman. Setara dengan /x0c dan /cl. |
| /N | Cocokkan karakter garis baru. Setara dengan /x0a dan /cj. |
| /R | Cocokkan karakter carriage return. Setara dengan /x0d dan /cm. |
| /S | Cocokkan karakter whitespace apa pun, termasuk spasi, tab, istirahat halaman, dll. Setara dengan [/f/n/r/t/v]. |
| /S | Cocokkan karakter non-whitespace. Setara dengan [^/f/n/r/t/v]. |
| /T | Cocokkan karakter tab. Setara dengan /x09 dan /ci. |
| /v | Cocokkan tab vertikal. Setara dengan /x0b dan /ck. |
| /w | Cocokkan karakter kata apa pun yang mencakup garis bawah. Setara dengan '[a-za-z0-9_]'. |
| /W | Cocokkan karakter non-kata. Setara dengan '[^a-za-z0-9_]'. |
| /x n | Cocokkan N , di mana N adalah nilai pelarian heksadesimal. Nilai pelarian heksadesimal harus panjang dua angka yang ditentukan. Misalnya, '/x41' cocok dengan A. '/x041' setara dengan '/x04' & 1. Pengkodean ASCII dapat digunakan dalam ekspresi reguler. . |
| / num | Cocokkan num , di mana num adalah bilangan bulat positif. Referensi ke pertandingan yang diperoleh. Misalnya, '(.)/1' cocok dengan dua karakter identik berturut -turut. |
| / N | Mengidentifikasi nilai pelarian oktal atau referensi terbelakang. Jika setidaknya N memperoleh sub -ekspresi sebelum / n , n adalah referensi mundur. Kalau tidak, jika n adalah angka oktal (0-7), n adalah nilai pelarian oktal. |
| / nm | Mengidentifikasi nilai pelarian oktal atau referensi terbelakang. Jika setidaknya NM memperoleh sub -ekspresi didahului oleh setidaknya NM sebelum / nm , NM adalah referensi mundur. Jika ada setidaknya n ambil sebelum / nm , n adalah referensi mundur diikuti oleh m literal. Jika tidak ada kondisi sebelumnya yang terpenuhi, jika n dan m adalah nomor oktal (0-7), maka / nm akan cocok dengan nilai pelarian oktal NM . |
| / nml | Jika n adalah angka oktal (0-3), dan M dan L keduanya angka oktal (0-7), nilai keluar oktal NML dicocokkan. |
| /u n | Cocokkan N , di mana N adalah karakter unicode yang diwakili oleh empat digit heksadesimal. Misalnya, /U00A9 cocok dengan simbol hak cipta (?). |
Setelah membangun ekspresi reguler, Anda dapat mengevaluasi seperti ekspresi matematika, yaitu, Anda dapat mengevaluasi dari kiri ke kanan dan dalam urutan prioritas.
Tabel berikut mencantumkan urutan prioritas berbagai operator ekspresi reguler dari prioritas tertinggi ke prioritas terendah:
| Operator | menggambarkan |
|---|---|
| / | Simbol melarikan diri |
| (), (? :), (? =), [] | Kawat gigi dan kurung persegi |
| *, +,?, {n}, {n,}, {n, m} | Kualifikasi |
| ^, $, / anymetacharacter | Posisi dan ketertiban |
| | | Atau beroperasi |