Terkadang saya tidak tahu berapa banyak karakter yang cocok. Untuk dapat beradaptasi dengan ketidakpastian ini, ekspresi reguler mendukung konsep kualifikasi. Kualifikasi ini dapat menentukan berapa kali komponen yang diberikan dari ekspresi reguler harus muncul sebelum pertandingan dapat dipenuhi.
Tabel berikut memberikan penjelasan tentang berbagai kualifikasi dan artinya:
karakter | menggambarkan |
---|---|
* | 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. |
Untuk dokumen input besar, jumlah bab dapat dengan mudah melebihi sembilan bab, jadi ada cara untuk menangani nomor bab dua digit atau tiga digit. Kualifikasi menyediakan fungsi ini. Ekspresi reguler JScript berikut dapat cocok dengan judul bab dengan sejumlah bit:
/Chapter [1-9][0-9]*/
Ekspresi reguler vbscript berikut melakukan kecocokan yang sama:
Chapter [1-9][0-9]*
Perhatikan bahwa kualifikasi muncul setelah ekspresi rentang. Oleh karena itu, ini akan diterapkan pada seluruh rentang ekspresi yang terkandung, dalam hal ini hanya angka dari 0 hingga 9 yang ditentukan.
Kualifikasi '+' tidak digunakan di sini, karena angka tidak harus diperlukan pada posisi kedua atau selanjutnya. Juga tidak ada karakter '?' Setidaknya satu nomor harus dicocokkan setelah 'bab' dan karakter ruang.
Jika batasan bab dikenal sebagai 99 bab, Anda dapat menggunakan ekspresi JScript berikut untuk menentukan setidaknya satu angka, tetapi tidak lebih dari dua angka.
/Chapter [0-9]{1,2}/
Untuk VBScript, ekspresi reguler berikut dapat digunakan:
Chapter [0-9]{1,2}
Kerugian dari ekspresi di atas adalah bahwa jika ada nomor bab yang lebih besar dari 99, masih hanya akan cocok dengan dua digit pertama. Kelemahan lain adalah bahwa beberapa orang dapat membuat bab 0 dan masih cocok. Ekspresi JScript yang lebih baik untuk mencocokkan angka dua digit adalah sebagai berikut:
/Chapter [1-9][0-9]?/
atau
/Chapter [1-9][0-9]{0,1}/
Untuk VBScript, ekspresi berikut ini setara dengan yang di atas:
Chapter [1-9][0-9]?
atau
Chapter [1-9][0-9]{0,1}
' *
' , ' +'
Dan ' ?'
Terkadang ini bukan yang Anda inginkan sama sekali. Terkadang itu kebetulan merupakan pertandingan terkecil.
Misalnya, Anda mungkin ingin mencari dokumen HTML untuk menemukan judul bab yang termasuk dalam tag H1. Dalam sebuah dokumen, teks mungkin memiliki formulir berikut:
<H1>Chapter 1 – Introduction to Regular Expressions</H1>
Ekspresi berikut cocok dengan segala sesuatu dari awal kurang dari tanda (<) hingga akhir penanda H1.
/<.*>/
Ekspresi reguler VBScript adalah:
<.*>
Jika apa yang harus dicocokkan adalah tag H1 awal, ekspresi non-greedy berikut hanya cocok dengan <H1>.
/<.*?>/
atau
<.*?>
Dengan menempatkan '?' Setelah '*', '+' atau '?
Sampai sekarang, contoh -contoh yang terlihat hanya mempertimbangkan menemukan judul bab yang muncul di mana saja. 'Bab' string apa pun yang muncul diikuti oleh ruang dan angka dapat berupa judul bab nyata atau referensi silang ke bab lain. Karena judul bab nyata selalu muncul di awal garis, perlu merancang metode untuk hanya mencari judul dan bukan referensi silang.
Locator menyediakan fungsi ini. Seorang locator dapat memperbaiki ekspresi reguler di awal atau akhir garis. Anda juga dapat membuat ekspresi reguler yang hanya muncul dalam kata -kata atau hanya di awal atau akhir kata. Tabel berikut berisi daftar ekspresi reguler dan artinya:
karakter | menggambarkan |
---|---|
^ | 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'. |
/B | Cocokkan batas kata, yang berarti posisi antara kata dan ruang. |
/B | Cocokkan batas non-kata. |
Kualifikasi tidak dapat digunakan untuk pelacak. Karena tidak akan ada posisi berturut -turut sebelum atau sesudah batas baru atau kata, ekspresi seperti '^*' tidak diizinkan.
Untuk mencocokkan teks di awal baris teks, gunakan karakter '^' di awal ekspresi reguler. Jangan membingungkan sintaks '^' dengan sintaksnya dalam ekspresi tanda kurung. Sintaks mereka pada dasarnya berbeda.
Untuk mencocokkan teks di akhir baris teks, gunakan karakter '$' di akhir ekspresi reguler.
Untuk menggunakan locator saat mencari judul bab, ekspresi reguler JScript berikut akan cocok dengan judul bab dengan hingga dua angka di awal baris:
/^Chapter [1-9][0-9]{0,1}/
Ekspresi reguler untuk fungsi yang sama dalam VBScript adalah sebagai berikut:
^Chapter [1-9][0-9]{0,1}
Judul bab nyata tidak hanya muncul di awal baris, tetapi juga hanya memiliki konten ini di baris ini, jadi itu juga harus di akhir baris. Ekspresi berikut memastikan bahwa kecocokan yang ditentukan hanya cocok dengan bab dan tidak cocok dengan referensi silang. Ini dicapai dengan menciptakan ekspresi reguler yang hanya cocok dengan posisi awal dan akhir dari garis literal.
/^Chapter [1-9][0-9]{0,1}$/
Untuk VBScript, gunakan:
^Chapter [1-9][0-9]{0,1}___FCKpd___16quot;
Batas kata yang cocok sedikit berbeda, tetapi menambahkan fungsi yang sangat penting untuk ekspresi reguler. Kata batas adalah posisi antara kata dan ruang. Batas-batas non-kata ada di tempat lain. Ekspresi JScript berikut akan cocok dengan tiga karakter pertama dari kata 'bab' karena mereka muncul setelah batas kata:
//bCha/
Untuk vbscript:
/bCha
Posisi operator '/b' sangat penting di sini. Jika itu di awal string yang cocok, kecocokan di awal kata dicari; jika itu di akhir string, kecocokan di akhir kata dicari. Misalnya, ungkapan berikut akan cocok dengan 'ter' dalam kata 'bab' karena muncul sebelum batas kata:
/ter/b/
maupun
ter/b
Ekspresi berikut akan cocok dengan 'apt' karena berada di tengah 'bab', tetapi tidak akan cocok dengan 'apt' di 'aptitude':
//Bapt/
maupun
/Bapt
Ini karena 'apt' muncul di posisi batas non-kata dalam kata 'bab' dan dalam kata 'aptitude'. Posisi operator batas non-kata tidak penting karena kecocokan tidak ada hubungannya dengan awal atau akhir kata.