Latest web development tutorials

Regular Expressions - Contoh

ekspresi sederhana

Bentuk paling sederhana dari ekspresi reguler yang cocok karakter biasa sendiri dalam string pencarian. Misalnya, mode single-karakter, seperti A, apakah dalam string pencarian di mana ia selalu cocok dengan huruf A. Berikut ini adalah contoh dari pola ekspresi reguler dari beberapa karakter tunggal:

/a/
/7/
/M/

Hal ini dapat dikombinasikan bersama untuk membentuk karakter tunggal dari banyak ekspresi yang besar. Sebagai contoh, ekspresi reguler berikut adalah kombinasi dari ekspresi karakter tunggal: a, 7 dan M.

/a7M/

Perhatikan bahwa tidak ada operator concatenation. Cukup ketik karakter lain di belakang karakter.

pertandingan karakter

Titik (.) Cocok string dalam berbagai cetak dan non-cetak karakter, hanya satu karakter pengecualian. pengecualian adalah karakter baris baru (\ n). Berikut ekspresi reguler cocok aac, abc, acc, adc, dll, serta A1C, A2C, ac, dan # c:

/a.c/

Untuk mencocokkan string yang berisi nama file, dan periode (.) Apakah bagian integral dari string input, di depan ekspresi reguler pada periode ditambah karakter backslash (\). Untuk menggambarkan, ekspresi reguler berikut cocok filename.ext:

/filename\.ext/

Ekspresi ini hanya memungkinkan Anda untuk mencocokkan "setiap" karakter tunggal. daftar mungkin perlu untuk mencocokkan set karakter tertentu. Misalnya, Anda mungkin ingin mencari judul bab dengan angka (Bab 1, Bab 2, dan seterusnya).

Ekspresi dalam kurung

Untuk membuat daftar kelompok karakter yang cocok, dalam tanda kurung siku ([dan]) menempatkan satu atau lebih karakter individual dalam. Ketika karakter tertutup dalam tanda kurung, daftar yang disebut "ekspresi braket." Seperti di lokasi lain, karakter yang biasa mewakili diri mereka sendiri dalam tanda kurung, yaitu, itu cocok dengan salah satu sendiri dalam teks input. Kehilangan makna ketika Anda muncul dalam ekspresi braket karakter yang paling istimewa. Tapi ada beberapa pengecualian, seperti:

  • Jika karakter] bukan yang pertama, itu adalah akhir dari daftar. Untuk mencocokkan daftar] karakter, meletakkannya di tempat pertama, diikuti pada awal [belakang.
  • \ Karakter terus menjadi karakter escape. Untuk mencocokkan karakter \, menggunakan \\.

Tertutup dalam pertandingan ekspresi braket hanya karakter dalam ekspresi reguler di satu karakter pada posisi itu. Berikut ekspresi reguler pencocokan Bab 1, Bab 2, Bab 3, Bab 4 dan Bab 5:

/Chapter [12345]/

Harap dicatat bahwa lokasi ruang setelah Bab kata dan sehubungan dengan karakter dalam kurung adalah tetap. ekspresi braket menspesifikasikan hanya cocok dengan posisi karakter tunggal segera setelah Bab kata dan ruang di belakang set karakter. Ini adalah posisi karakter kesembilan.

Untuk menggunakan berbagai bukannya karakter sendiri untuk mewakili pencocokan set karakter, menggunakan tanda hubung (-) di kisaran karakter awal dan karakter akhir secara terpisah. nilai karakter untuk menentukan urutan relatif karakter individu dalam jangkauan. Berikut ekspresi reguler berisi ekspresi berbagai, ekspresi adalah setara dengan rentang yang ditunjukkan di atas dalam daftar kurung.

/Chapter [1-5]/

Ketika digunakan dalam berbagai cara yang ditentukan ini, baik awal dan nilai-nilai akhir termasuk dalam ruang lingkup. Catatan Hal ini juga penting, menurut urutan Unicode, nilai harus dimulai pada akhir nilai-nilai sebelumnya.

Termasuk ke dalam braket ekspresi tanda hubung, menggunakan salah satu metode berikut:

  • Dengan backslash melarikan diri itu:
    [\-]
  • Tanda hubung di awal atau akhir daftar dalam tanda kurung. Ungkapan berikut cocok dengan semua huruf kecil dan tanda hubung:
    [-a-z]
    [a-z-]
    
  • Buat rentang, dalam kisaran ini, nilai awal adalah kurang dari karakter tanda hubung dan karakter akhir sama dengan atau lebih besar dari tanda hubung. Berikut dua ekspresi reguler memenuhi persyaratan ini:
    [!--]
    [!-~]
    

Untuk menemukan daftar atau tidak dalam lingkup semua karakter, mengatur tanda sisipan (^) pada awal daftar. Jika lokasi lain dalam daftar untuk menyisipkan karakter muncul, maka itu cocok itu sendiri. Berikut ekspresi reguler sama pada setiap karakter, 4 atau 5 digit dan seterusnya:

/Chapter [^12345]/

Dalam contoh di atas, ekspresi cocok dengan 3, 4 atau 5 angka dan karakter lain selain di posisi kesembilan. Jadi, misalnya, Bab 7 pertandingan, Bab 9 adalah pertandingan.

Ekspresi di atas dapat menggunakan tanda hubung (-) untuk menunjukkan:

/Chapter [^1-5]/

Sebuah penggunaan yang khas dari ekspresi bracket adalah untuk menentukan setiap huruf besar atau kecil atau sejumlah pertandingan. Ekspresi berikut menentukan seperti pertandingan:

/[A-Za-z0-9]/

Substitusi dan pengelompokan

Mengganti penggunaan | karakter untuk memungkinkan komunikasi antara dua atau lebih alternatif untuk memilih. Misalnya, judul bab dapat diperpanjang ekspresi reguler untuk kembali lebih luas daripada judul bab cocok. Namun, hal ini tidak sesederhana seperti yang Anda bayangkan. Ganti Pertandingan | karakter ekspresi maksimum satu sisi.

Anda mungkin berpikir bahwa ekspresi berikut cocok muncul di awal dan akhir baris, diikuti oleh satu atau dua digit dari Bab atau Bagian:

/^Chapter|Section [1-9][0-9]{0,1}$/

Sayangnya, ekspresi reguler di atas baris yang cocok baik kata Bab pertama, atau pencocokan akhir baris dengan Bagian kata dan setiap nomor berikutnya. Jika input string Bab 22, maka ekspresi di atas hanya cocok kata Bab. Jika input string adalah Pasal 22, maka ekspresi sesuai Pasal 22.

Untuk membuat ekspresi reguler lebih mudah untuk mengontrol, Anda dapat menggunakan tanda kurung untuk membatasi ruang lingkup pengganti, yaitu, untuk memastikan bahwa hal itu hanya berlaku untuk dua kata Bab dan Pasal. Namun, tanda kurung digunakan untuk membuat sub-ekspresi, dan mungkin menangkap mereka untuk digunakan, yang dijelaskan di bagian tentang referensi terbalik. Dengan ekspresi reguler di atas untuk menambahkan tempat kurung, dapat membuat ekspresi reguler cocok Bab 1 atau Bagian 3.

Berikut ekspresi reguler menggunakan tanda kurung untuk Bab kelompok dan Bagian, agar dapat berfungsi ekspresi benar:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

Meskipun ekspresi ini bekerja, tapi Bab | kurung Bagian sekitar akan menangkap salah satu dari dua kata dalam pertandingan untuk digunakan nanti. Sejak ekspresi di atas hanya satu set tanda kurung, sehingga hanya menangkap "sub-pertandingan."

Dalam contoh di atas, Anda hanya perlu menggunakan tanda kurung untuk memilih kombinasi kata antara Bab dan Pasal. Untuk mencegah pertandingan yang akan disimpan untuk digunakan di masa depan, sebelum pola ekspresi reguler ditempatkan dalam tanda kurung?:. Modifikasi berikut memberikan kemampuan yang sama tanpa menyimpan pertandingan anak:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

Selain :? karakter Exon, dua lainnya adalah metakarakter non-menangkap menciptakan sesuatu yang disebut "lookahead" pertandingan. Penggunaan lookahead maju? = Ditentukan, cocok dalam kurung cocok dengan pola ekspresi reguler dari titik awal dari string pencarian. Membalikkan penggunaan lookahead ?! Ditentukan, cocok dalam pola ekspresi reguler tidak cocok dengan string pencarian string dimulai.

Misalnya, Anda memiliki dokumen yang berisi link ke Windows 3.1, Windows 95, Windows 98 dan referensi Windows NT dari. Asumsikan lebih lanjut bahwa Anda perlu memperbarui dokumen akan mengarah ke Windows 95, Windows 98 dan Windows NT semua referensi berubah untuk Windows 2000. Berikut ekspresi reguler (ini adalah contoh pertama dari prediksi ke depan) cocok Windows 95, Windows 98 dan Windows NT:

/Windows(?=95 |98 |NT )/

Menemukan kecocokan, pertandingan akan segera mencari pertandingan berikutnya di teks (tidak termasuk karakter lookahead) setelah. Sebagai contoh, jika ekspresi di atas cocok Windows 98, malah akan melanjutkan pencarian setelah 98 setelah Windows.

contoh lain

Berikut adalah beberapa contoh dari ekspresi reguler:

正则表达式 描述
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。
/[-a-z]/ a至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能匹配terminal。
/\Bapt/ 可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
/^\s*$/ 匹配空行。
/\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。