Bahasa Regex - Referensi Cepat

Ekspresi reguler adalah pola yang coba dicocokkan oleh mesin ekspresi reguler dalam teks input. Pola terdiri dari satu atau beberapa karakter literal, operator, atau konstruksi. Untuk pengenalan singkat, lihat Ekspresi Reguler .NET.

Setiap bagian dalam referensi cepat ini mencantumkan kategori karakter, operator, dan konstruksi tertentu yang dapat Anda gunakan untuk mendefinisikan ekspresi reguler.

Kami juga menyediakan informasi ini dalam dua format yang dapat Anda unduh dan cetak untuk referensi yang mudah:

Karakter Escape

Karakter garis miring terbalik (\) dalam ekspresi reguler menunjukkan bahwa karakter yang mengikutinya adalah karakter khusus (seperti yang ditunjukkan pada tabel berikut), atau harus ditafsirkan secara harfiah. Untuk informasi selengkapnya, lihat Karakter Escape.

Karakter escape Deskripsi Pola Cocok
\a Cocok dengan karakter lonceng, \u0007. \a "\u0007" di "Error!" + '\u0007'
\b Di kelas karakter, cocok dengan backspace, \u0008. [\b]{3,} "\b\b\b\b" di "\b\b\b\b"
\t Cocok dengan tab, \u0009. (\w+)\t "item1\t", "item2\t" di "item1\titem2\t"
\r Cocok dengan carriage return, \u000D. (\r tidak setara dengan karakter baris baru, \n.) \r\n(\w+) "\r\nThese" di "\r\nThese are\ntwo lines."
\v Cocok dengan tab vertikal, \u000B. [\v]{2,} "\v\v\v" di "\v\v\v"
\f Cocok dengan umpan formulir, \u000C. [\f]{2,} "\f\f\f" di "\f\f\f"
\n Cocok dengan baris baru, \u000A. \r\n(\w+) "\r\nThese" di "\r\nThese are\ntwo lines."
\e Cocok dengan escape, \u001B. \e "\x001B" di "\x001B"
\nnn Menggunakan representasi oktal untuk menentukan karakter (nnn terdiri dari dua atau tiga digit). \w\040\w "a b", "c d" di "a bc d"
\xnn Menggunakan representasi heksadesimal untuk menentukan karakter (nn terdiri dari tepat dua digit). \w\x20\w "a b", "c d" di "a bc d"
\cX

\cx
Cocok dengan karakter kontrol ASCII yang ditentukan oleh X atau x, dengan X atau x adalah huruf dari karakter kontrol. \cC "\x0003" di "\x0003" (Ctrl-C)
\unnnn Mencocokkan karakter Unicode dengan menggunakan representasi heksadesimal (tepatnya empat digit, seperti yang diwakili oleh nnnn). \w\u0020\w "a b", "c d" di "a bc d"
\ Jika diikuti oleh karakter yang tidak dikenali sebagai karakter escape dalam tabel ini dan tabel lainnya dalam topik ini, akan cocok dengan karakter tersebut. Misalnya, \* sama dengan \x2A, dan \. sama dengan \x2E. Hal ini memungkinkan mesin ekspresi reguler untuk membedakan elemen bahasa (seperti * atau ?) dan karakter literal (diwakili oleh \* atau \?). \d+[\+-x\*]\d+ "2+2" dan "3*9" di "(2+2) * 3*9"

Kelas Karakter

Kelas karakter cocok dengan salah satu dari set karakter. Kelas karakter termasuk unsur-unsur bahasa yang tercantum dalam tabel berikut. Untuk informasi selengkapnya, lihat Kelas Karakter.

Kelas karakter Deskripsi Pola Cocok
[character_group] Cocok dengan karakter tunggal mana pun di character_group. Secara default, kecocokan peka huruf besar/kecil. [ae] "a" di "gray"

"a", "e" di "lane"
[^character_group] Negasi: Mencocokkan karakter tunggal mana pun yang tidak ada dalam character_group. Secara default, karakter dalam character_group peka huruf besar/kecil. [^aei] "r", "g", "n" di "reign"
[pertama-terakhir] Rentang karakter: Mencocokkan karakter tunggal mana pun dalam rentang dari pertama hingga terakhir. [A-Z] "A", "B" di "AB123"
. Wildcard: Cocok dengan karakter tunggal apa pun kecuali \n.

Untuk mencocokkan karakter titik literal (. atau \u002E), Anda harus mendahuluinya dengan karakter escape (\.).
a.e "ave" di "nave"

"ate" di "water"
\p{nama} Cocok dengan karakter tunggal mana pun dalam kategori umum Unicode atau blok bernama yang ditentukan oleh name. \p{Lu}

\p{IsCyrillic}
"C", "L" di "City Lights"

"Д", "Ж" di "ДЖem"
\P{nama} Mencocokkan karakter tunggal apa pun yang tidak termasuk dalam kategori umum Unicode atau blok bernama yang ditentukan oleh name. \P{Lu}

\P{IsCyrillic}
"i", "t", "y" di "City"

"e", "m" di "ДЖem"
\w Cocok dengan karakter kata apa pun. \w "I", "D", "A", "1", "3" di "ID A1.3"
\W Cocok dengan karakter non-kata apa pun. \W " ", "." di "ID A1.3"
\s Cocok dengan karakter white space apa pun. \w\s "D " di "ID A1.3"
\S Cocok dengan karakter non-spasi apa pun . \s\S " _" di "int __ctr"
\d Cocok dengan digit desimal. \d "4" di "4 = IV"
\D Cocok dengan karakter apa pun selain angka desimal. \D " ", "=", " ", "I", "V" di "4 = IV"

Jangkar

Jangkar, atau assertion lebar nol atom, menyebabkan kecocokan berhasil atau gagal tergantung pada posisi saat ini dalam string, tetapi mereka tidak menyebabkan mesin maju melalui string atau menggunakan karakter. Metakarakter yang tercantum dalam tabel berikut adalah jangkar. Untuk informasi selengkapnya, lihat Jangkar.

Assertion Deskripsi Pola Cocok
^ Secara default, kecocokan harus dimulai dari awal string; dalam mode beberapa baris, kecocokan harus dimulai dari awal baris. ^\d{3} "901" di "901-333-"
$ Secara default, kecocokan harus terjadi di akhir string atau sebelum \n di akhir string; dalam mode beberapa baris, kecocokan harus terjadi sebelum akhir baris atau sebelum \n di akhir baris. -\d{3}$ "-333" di "-901-333"
\A Kecocokan harus terjadi di awal string. \A\d{3} "901" di "901-333-"
\Z Kecocokan harus terjadi di akhir string atau sebelum \n di akhir string. -\d{3}\Z "-333" di "-901-333"
\z Kecocokan harus terjadi di akhir string. -\d{3}\z "-333" di "-901-333"
\G Kecocokan harus terjadi pada titik tempat kecocokan sebelumnya berakhir, atau jika tidak ada kecocokan sebelumnya, pada posisi di string tempat pencocokan dimulai. \G\(\d\) "(1)", "(3)", "(5)" di "(1)(3)(5)[7](9)"
\b Kecocokan harus terjadi pada batas antara karakter \w (alfanumerik) dan \W (nonalfanumerik). \b\w+\s\w+\b "them theme", "them them" di "them theme them them"
\B Kecocokan tidak boleh terjadi pada batas \b. \Bend\w*\b "ends", "ender" di "end sends endure lender"

Pengelompokan Konstruksi

Pengelompokan konstruksi menggambarkan subekspresi dari ekspresi reguler dan biasanya menangkap substring dari string input. Pengelompokan konstruksi mencakup unsur-unsur bahasa yang tercantum dalam tabel berikut. Untuk informasi selengkapnya, lihat Konstruksi Pengelompokan.

Pengelompokan konstruksi Deskripsi Pola Cocok
(subekspresi) Menangkap subekspresi yang cocok dan memberinya nomor urut berbasis satu. (\w)\1 "ee" di "deep"
(?<name>subekspresi)
atau
(?'name'subekspresi)
Menangkap subekspresi yang cocok ke dalam grup bernama. (?<double>\w)\k<double> "ee" di "deep"
(?<name1-name2>subekspresi)
atau
(?'name1-name2'subekspresi)
Mendefinisikan definisi grup penyeimbang. Untuk informasi selengkapnya, lihat bagian "Menyeimbangkan Definisi Grup" di Pengelompokan Konstruksi. (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ "((1-3)*(3-1))" di "3+2^((1-3)*(3-1))"
(?:subekspresi) Mendefinisikan grup yang tidak menangkap. Write(?:Line)? "WriteLine" di "Console.WriteLine()"

"Write" di "Console.Write(value)"
(?imnsx-imnsx:subekspresi) Menerapkan atau menonaktifkan opsi yang ditentukan dalam subekspresi. Untuk informasi selengkapnya, lihat Opsi Ekspresi Reguler. A\d{2}(?i:\w+)\b "A12xl", "A12XL" di "A12xl A12XL a12xl"
(?=subekspresi) Assertion lookahead positif dengan lebar nol. \b\w+\b(?=.+and.+) "cats", "dogs"
in
"cats, dogs and some mice."
(?!subekspresi) Assertion lookahead negatif dengan lebar-nol. \b\w+\b(?!.+and.+) "and", , "some""mice"
in
"cats, dogs and some mice."
(?<=subekspresi) Assertion lookbehind positif dengan lebar nol. \b\w+\b(?<=.+and.+)

———————————

\b\w+\b(?<=.+and.*)
"some", "mice"
in
"cats, dogs and some mice."
————————————
"and", , "some""mice"
in
"cats, dogs and some mice."
(?<!subekspresi) Assertion lookbehind negatif dengan lebar nol. \b\w+\b(?<!.+and.+)

———————————

\b\w+\b(?<!.+and.*)
"cats", , "dogs""and"
in
"cats, dogs and some mice."
————————————
"cats", "dogs"
in
"cats, dogs and some mice."
(?>subekspresi) Grup atom. '(?>a|ab)c "ac" di"ac"

tidak ada di"abc"

Lihat sekilas

Ketika mesin ekspresi reguler menyentuh ekspresi lookaround, dibutuhkan substring yang menjangkau dari posisi saat ini ke awal (lookbehind) atau akhir (lookahead) dari string asli, kemudian menjalankan Regex.IsMatch pada substring tersebut menggunakan pola lookaround. Keberhasilan hasil subekspresi ini kemudian ditentukan oleh assertion positif atau negatif.

Lookaround Nama Function
(?=check) Lookahead Positif Menegaskan bahwa yang akan segera mengikuti posisi saat ini dalam string adalah "check"
(?<=check) Lookbehind Positif Menegaskan bahwa yang akan segera mendahului posisi saat ini dalam string adalah "check"
(?!check) Lookahead Negatif Menegaskan bahwa yang akan segera mengikuti posisi saat ini dalam string bukan "check"
(?<!check) Lookbehind Negatif Menegaskan bahwa yang akan segera mendahului posisi saat ini dalam string bukan "check"

Setelah cocok, grup atom tidak akan dievaluasi ulang lagi, bahkan ketika sisa pola gagal karena kecocokan. Ini dapat secara signifikan meningkatkan performa ketika pembilang terjadi dalam grup atom atau sisa pola.

Pembilang

Pembilang menentukan berapa banyak instans elemen sebelumnya (yang dapat berupa karakter, grup, atau kelas karakter) yang harus ada dalam string input agar kecocokan terjadi. Pembilang mencakup elemen bahasa yang tercantum dalam tabel berikut. Untuk informasi selengkapnya, lihat Pembilang.

Pembilang Deskripsi Pola Cocok
* Mencocokkan elemen sebelumnya nol kali atau lebih. a.*c "abcbc" di "abcbc"
+ Mencocokkan elemen sebelumnya satu kali atau lebih. "be+" "bee" di "been", "be" di "bent"
? Cocok dengan elemen sebelumnya nol kali atau satu kali. "rai?" "rai" di "rain"
{n} Mencocokkan elemen sebelumnya tepat n kali. ",\d{3}" ",043" di "1,043.6", ",876", ",543", dan ",210" di "9,876,543,210"
{n,} Cocok dengan elemen sebelumnya setidaknya n kali. "\d{2,}" "166", , "29""1930"
{n,m} Cocok dengan elemen sebelumnya setidaknya n kali, tetapi tidak lebih dari m kali. "\d{3,5}" "166", "17668"

"19302" di "193024"
*? Mencocokkan elemen sebelumnya nol kali atau lebih, tetapi sesedikit mungkin. a.*?c "abc" di "abcbc"
+? Mencocokkan elemen sebelumnya satu kali atau lebih, tetapi sesedikit mungkin. "be+?" "be" di "been", "be" di "bent"
?? Cocok dengan elemen sebelumnya nol atau satu kali, tetapi sesedikit mungkin. "rai??" "ra" di "rain"
{n}? Mencocokkan elemen sebelumnya tepat n kali. ",\d{3}?" ",043" di "1,043.6", ",876", ",543", dan ",210" di "9,876,543,210"
{n,}? Mencocokkan elemen sebelumnya setidaknya n kali, tetapi sesedikit mungkin. "\d{2,}?" "166", , "29""1930"
{n,m}? Mencocokkan elemen sebelumnya antara n dan m kali, tetapi sesedikit mungkin. "\d{3,5}?" "166", "17668"

"193", "024" di "193024"

Konstruksi Backreference

Backreference memungkinkan subekspresi yang sebelumnya cocok untuk diidentifikasi kemudian dalam ekspresi reguler yang sama. Tabel berikut mencantumkan konstruksi backreference yang didukung oleh ekspresi reguler di .NET. Untuk informasi selengkapnya, lihat Konstruksi Backreference.

Konstruksi backreference Deskripsi Pola Cocok
\number Backreference. Cocok dengan nilai subekspresi bernomor. (\w)\1 "ee" di "seek"
\k<nama> Dinamakan backreference. Cocok dengan nilai ekspresi bernama. (?<char>\w)\k<char> "ee" di "seek"

Konstruksi Alternatif

Konstruksi alternatif memodifikasi ekspresi reguler untuk mengaktifkan pencocokan either/or. Konstruksi ini mencakup elemen bahasa yang tercantum dalam tabel berikut. Untuk informasi selengkapnya, lihat Konstruksi Perubahan.

Konstruksi perubahan Deskripsi Pola Cocok
| Mencocokkan salah satu elemen yang dipisahkan oleh karakter bilah vertikal (|). th(e|is|at) "the", "this" di "this is the day."
(?(ekspresi)ya|tidak)
atau
(?(ekspresi)ya)
Cocok dengan ya jika pola ekspresi reguler yang ditunjuk oleh ekspresi cocok; jika tidak, cocok dengan bagian no opsional. Ekspresi ditafsirkan sebagai assertion lebar-nol.

Untuk menghindari ambiguitas dengan grup penangkap bernama atau bernomor, Anda dapat secara opsional menggunakan assertion eksplisit, seperti ini:
(?( (?=ekspresi) )ya|tidak)
(?(A)A\d{2}\b|\b\d{3}\b) "A10", "910" di "A10 C103 910"
(?(nama)ya|tidak)
atau
(?(nama)ya)
Cocok ya jika name, grup penangkap bernama atau bernomor, memiliki kecocokan; jika tidak, cocok dengan no opsional. (?<quoted>")?(?(quoted).+?"|\S+\s) "Dogs.jpg ", "\"Yiska playing.jpg\"" di "Dogs.jpg \"Yiska playing.jpg\""

Substitusi

Substitusi adalah elemen bahasa ekspresi reguler yang didukung dalam pola penggantian. Untuk informasi selengkapnya, lihat Substitusi. Metakarakter yang tercantum dalam tabel berikut adalah assertion atom dengan lebar nol.

karakter Deskripsi Pola Pola penggantian Input string String hasil
$number Mengganti substring yang cocok dengan grup number. \b(\w+)(\s)(\w+)\b $3$2$1 "one two" "two one"
${nama} Mengganti substring yang cocok dengan grup bernama name. \b(?<word1>\w+)(\s)(?<word2>\w+)\b ${word2} ${word1} "one two" "two one"
$$ Mengganti literal "$". \b(\d+)\s?USD $$$1 "103 USD" "$103"
$& Mengganti salinan seluruh kecocokan. \$?\d*\.?\d+ **$&** "$1.30" "**$1.30**"
$` Mengganti semua teks string input sebelum kecocokan. B+ $` "AABBCC" "AAAACC"
$' Mengganti semua teks string input setelah kecocokan. B+ $' "AABBCC" "AACCCC"
$+ Mengganti grup terakhir yang ditangkap. B+(C+) $+ "AABBCCDD" "AACCDD"
$_ Mengganti seluruh string input. B+ $_ "AABBCC" "AAAABBCCCC"

Opsi Regex

Anda dapat menentukan opsi yang mengontrol bagaimana mesin ekspresi reguler menginterpretasikan pola ekspresi reguler. Banyak dari opsi ini dapat ditentukan baik satu baris (dalam pola ekspresi reguler) atau sebagai satu atau beberapa RegexOptions konstanta. Referensi cepat ini hanya mencantumkan opsi satu baris. Untuk informasi selengkapnya tentang opsi satu baris dan RegexOptions, lihat artikel Opsi Ekspresi Reguler.

Anda dapat menentukan opsi satu baris dengan dua cara:

  • Dengan menggunakan konstruksi lain-lain(?imnsx-imnsx), di mana tanda minus (-) sebelum opsi atau kumpulan opsi mematikan opsi tersebut. Misalnya, (?i-mn) mengaktifkan pencocokan tidak peka huruf besar/kecil (i), menonaktifkan mode beberapa baris (m), dan menonaktifkan pengambilan grup tanpa nama (n). Opsi ini berlaku untuk pola ekspresi reguler dari titik tempat opsi ditentukan, dan efektif hingga akhir pola atau ke titik tempat konstruksi lain membalikkan opsi.
  • Dengan menggunakan pengelompokan konstruksi(?imnsx-imnsx:subekspresi), yang menentukan opsi untuk grup tertentu saja.

Mesin ekspresi reguler .NET mendukung opsi satu baris berikut ini:

Opsi Deskripsi Pola Cocok
i Gunakan pencocokan tidak peka huruf besar/kecil. \b(?i)a(?-i)a\w+\b "aardvark", "aaaAuto" di "aardvark AAAuto aaaAuto Adam breakfast"
m Gunakan mode beberapa baris. ^ dan $ cocok dengan awal dan akhir baris, bukan awal dan akhir string. Sebagai contoh, lihat bagian "Mode Multi Baris" di Opsi Ekspresi Reguler.
n Jangan ambil grup tanpa nama. Sebagai contoh, lihat bagian "Hanya Pengambilan Eksplisit" di Opsi Ekspresi Reguler.
s Gunakan mode satu baris. Sebagai contoh, lihat bagian "Mode Satu Baris" di Opsi Ekspresi Reguler .
x Abaikan white space yang tidak lolos dalam pola ekspresi reguler. \b(?x) \d+ \s \w+ "1 aardvark", "2 cats" di "1 aardvark 2 cats IV centurions"

Konstruksi Lain-Lain

Konstruksi lain-lain memodifikasi pola ekspresi reguler atau memberikan informasi tentangnya. Tabel berikut mencantumkan konstruksi lain-lain yang didukung oleh .NET. Untuk informasi selengkapnya, lihat Konstruksi Lain-Lain.

Konstruksi Definisi Contoh
(?imnsx-imnsx) Mengaktifkan atau menonaktifkan opsi seperti tidak peka huruf besar/kecil di tengah pola. Untuk informasi selengkapnya, lihat Opsi Ekspresi Reguler. \bA(?i)b\w+\b cocok dengan "ABA", "Able" di "ABA Able Act"
(?#komentar) Komentar satu baris. Komentar berakhir pada kurung penutup pertama. \bA(?#Matches words starting with A)\w+\b
# [ke akhir baris] komentar mode-X. Komentar dimulai pada # yang tidak lolos dan berlanjut ke akhir baris. (?x)\bA\w+\b#Matches words starting with A

Baca juga