diff --git a/README.md b/README.md index 9c1c4b2..e60496f 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ * [Polish](translations/README-pl.md) * [Русский](translations/README-ru.md) * [Tiếng Việt](translations/README-vn.md) +* [Bahasa Indonesia](translations/README-id.md) * [فارسی](translations/README-fa.md) * [עברית](translations/README-he.md) diff --git a/img/regexp-id.png b/img/regexp-id.png new file mode 100644 index 0000000..9a93f87 Binary files /dev/null and b/img/regexp-id.png differ diff --git a/translations/README-id.md b/translations/README-id.md new file mode 100644 index 0000000..548aec1 --- /dev/null +++ b/translations/README-id.md @@ -0,0 +1,604 @@ +
+
+
+
+
+
+
+
+
+
+
+
+"the" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/dmRygT/1) + +Ekspresi reguler `123` cocok dengan string `123`. Ekspresi reguler adalah +dicocokkan dengan string input dengan membandingkan setiap karakter di reguler +ekspresi ke setiap karakter dalam string input, satu demi satu. Reguler +ekspresi biasanya peka huruf besar/kecil sehingga ekspresi reguler `The` akan +tidak cocok dengan string `the`. + +
+"The" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/1paXsy/1) + +## 2. Karakter Meta + +Karakter meta adalah blok bangunan ekspresi reguler. Meta +karakter tidak berdiri sendiri tetapi sebaliknya ditafsirkan dalam beberapa +cara spesial. Beberapa karakter meta memiliki arti khusus dan tertulis di dalamnya +tanda kurung siku. Karakter metanya adalah sebagai berikut: + +|Meta karakter|Deskripsi| +|:----:|----| +|.|Titik cocok dengan karakter tunggal apa pun kecuali jeda baris.| +|[ ]|Kelas karakter. Mencocokkan karakter apa pun yang ada di antara tanda kurung siku.| +|[^ ]|Kelas karakter yang dinegasikan. Cocok dengan karakter apa pun yang tidak ada di antara tanda kurung siku| +|*|Mencocokkan dengan 0 atau lebih pengulangan dari simbol sebelumnya.| +|+|Mencocokkan 1 atau lebih pengulangan dari simbol sebelumnya.| +|?|Jadikan simbol sebelumnya opsional.| +|{n,m}|Kurung Kurawal. Mencocokkan setidaknya "n" tetapi tidak lebih dari "m" pengulangan simbol sebelumnya.| +|(xyz)|Kelompok karakter. Mencocokkan karakter xyz dalam urutan yang tepat.| +|||Alternasi. Mencocokkan dengan karakter sebelum atau karakter setelah simbol.| +|\|Meloloskan dari karakter berikutnya. Ini memungkinkan Anda untuk mencocokkan karakter yang dipesan
[ ] ( ) { } . * + ? ^ $ \ |
|
+|^|Mencocokkan dengan awal input.|
+|$|Mencocokkan dengan akhir input.|
+
+## 2.1 Perhentian Penuh
+
+Tanda titik `.` adalah contoh paling sederhana dari karakter meta. Karakter meta `.`
+cocok dengan karakter tunggal apa pun. Itu tidak akan cocok dengan karakter kembali atau baris baru.
+Misalnya, ekspresi reguler `.ar` berarti: karakter apa pun, diikuti oleh
+huruf `a`, diikuti dengan huruf `r`.
+
++".ar" => The car parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/xc9GkU/1) + +## 2.2 Set Karakter + +Kumpulan karakter juga disebut kelas karakter. Tanda kurung siku digunakan untuk +menentukan set karakter. Gunakan tanda hubung di dalam set karakter untuk menentukan +jangkauan karakter. Urutan rentang karakter di dalam tanda kurung siku +tidak masalah. Misalnya, ekspresi reguler `[Tt]he` berarti: huruf besar +`T` atau huruf kecil `t`, diikuti huruf `h`, diikuti huruf `e`. + +
+"[Tt]he" => The car parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/2ITLQ4/1) + +Sebuah periode di dalam set karakter, bagaimanapun, berarti periode literal. yang biasa +ekspresi `ar[.]` berarti: karakter huruf kecil `a`, diikuti dengan huruf `r`, +diikuti dengan karakter titik `.`. + +
+"ar[.]" => A garage is a good place to park a car. ++ +[Uji ekspresi reguler](https://regex101.com/r/wL3xtE/1) + +### 2.2.1 Set Karakter yang Dinegasikan + +Secara umum, simbol tanda sisipan mewakili awal string, tetapi ketika itu +diketik setelah kurung siku pembuka itu meniadakan set karakter. Untuk +contoh, ekspresi reguler `[^c]ar` berarti: karakter apa pun kecuali `c`, +diikuti dengan karakter `a`, diikuti dengan huruf `r`. + +
+"[^c]ar" => The car parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/nNNlq3/1) + +## 2.3 Pengulangan + +Karakter meta `+`, `*` atau `?` digunakan untuk menentukan berapa kali a +subpola dapat terjadi. Karakter meta ini bertindak secara berbeda di berbagai +situasi. + +### 2.3.1 Tanda Bintang + +Simbol `*` cocok dengan nol atau lebih pengulangan dari pencocokan sebelumnya. Itu +ekspresi reguler `a*` berarti: nol atau lebih pengulangan dari huruf kecil sebelumnya +karakter `a`. Tetapi jika itu muncul setelah set karakter atau kelas maka ia menemukan +pengulangan seluruh set karakter. Misalnya, ekspresi reguler +`[a-z]*` artinya: sejumlah huruf kecil dalam satu baris. + +
+"[a-z]*" => The car parked in the garage #21. ++ +[Uji ekspresi reguler](https://regex101.com/r/7m8me5/1) + +Simbol `*` dapat digunakan dengan karakter meta `.` untuk mencocokkan string apa pun dari +karakter `.*`. Simbol `*` dapat digunakan dengan karakter spasi putih `\s` +untuk mencocokkan string karakter spasi. Misalnya, ungkapan +`\s*cat\s*` artinya: nol spasi atau lebih, diikuti dengan huruf kecil `c`, +diikuti dengan huruf kecil `a`, diikuti dengan huruf kecil `t`, +diikuti oleh nol atau lebih spasi. + +
+"\s*cat\s*" => The fat cat sat on the concatenation. ++ +[Uji ekspresi reguler](https://regex101.com/r/gGrwuz/1) + +### 2.3.2 Tanda Tambah + +Simbol `+` cocok dengan satu atau lebih pengulangan karakter sebelumnya. Untuk +contoh, ekspresi reguler `c.+t` berarti: huruf kecil `c`, diikuti oleh +setidaknya satu karakter, diikuti dengan huruf kecil `t`. Itu perlu +mengklarifikasi bahwa `t` adalah `t` terakhir dalam kalimat. + +
+"c.+t" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/Dzf9Aa/1) + +### 2.3.3 Tanda Tanya + +Dalam ekspresi reguler, karakter meta `?` membuat karakter sebelumnya +opsional. Simbol ini cocok dengan nol atau satu contoh karakter sebelumnya. +Misalnya, ekspresi reguler `[T]?he` artinya: Huruf besar opsional +`T`, diikuti dengan huruf kecil `h`, diikuti dengan huruf kecil `e`. + +
+"[T]he" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/cIg9zm/1) + +
+"[T]?he" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/kPpO2x/1) + +## 2.4 Braces + +Dalam ekspresi reguler, kurung kurawal (juga disebut quantifier) digunakan untuk +tentukan berapa kali karakter atau sekelompok karakter dapat +ulang. Misalnya, ekspresi reguler `[0-9]{2,3}` berarti: Setidaknya cocok +2 digit, tetapi tidak lebih dari 3, mulai dari 0 hingga 9. + +
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Uji ekspresi reguler](https://regex101.com/r/juM86s/1) + +Kita bisa meninggalkan nomor kedua. Misalnya, ekspresi reguler +`[0-9]{2,}` berarti: Mencocokkan 2 digit atau lebih. Jika kita juga menghapus koma, +ekspresi reguler `[0-9]{3}` berarti: Sama persis dengan 3 digit. + +
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Uji ekspresi reguler](https://regex101.com/r/Gdy4w5/1) + +
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Test the regular expression](https://regex101.com/r/Sivu30/1) + +## 2.5 Menangkap Grup + +Grup penangkap adalah grup subpola yang ditulis di dalam tanda kurung +`(...)`. Seperti yang dibahas sebelumnya, dalam ekspresi reguler, jika kita menempatkan quantifier +setelah karakter maka akan mengulangi karakter sebelumnya. Tetapi jika kita menempatkan quantifier +setelah grup penangkap kemudian mengulangi seluruh grup penangkap. Sebagai contoh, +ekspresi reguler `(ab)*` cocok dengan nol atau lebih pengulangan karakter +"ab". Kita juga dapat menggunakan karakter meta `|` bergantian di dalam grup penangkap. +Misalnya, ekspresi reguler `(c|g|p)ar` berarti: huruf kecil `c`, +`g` atau `p`, diikuti oleh `a`, diikuti oleh `r`. + +
+"(c|g|p)ar" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/tUxrBG/1) + +Perhatikan bahwa menangkap grup tidak hanya cocok, tetapi juga menangkap, karakter untuk digunakan dalam +bahasa induk. Bahasa induk bisa berupa Python atau JavaScript atau hampir semua +bahasa yang mengimplementasikan ekspresi reguler dalam definisi fungsi. + +### 2.5.1 Grup yang Tidak Menangkap + +Grup yang tidak menangkap adalah grup yang cocok dengan karakter tetapi +tidak menangkap kelompok. Grup yang tidak menangkap dilambangkan dengan `?` diikuti oleh `:` +dalam tanda kurung `(...)`. Misalnya, ekspresi reguler `(?:c|g|p)ar` mirip dengan +`(c|g|p)ar` karena cocok dengan karakter yang sama tetapi tidak akan membuat grup tangkapan. + +
+"(?:c|g|p)ar" => The car is parked in the garage. ++ +[Test the regular expression](https://regex101.com/r/Rm7Me8/1) + +Grup yang tidak menangkap dapat berguna saat digunakan dalam fungsi temukan-dan-ganti atau +ketika dicampur dengan grup penangkap untuk menjaga gambaran umum saat memproduksi jenis keluaran lainnya. +Lihat juga [4. Melihat-lihat](#4-lookaround). + +## 2.6 Alternasi + +Dalam ekspresi reguler, bilah vertikal `|` digunakan untuk mendefinisikan pergantian. +Pergantian seperti pernyataan OR antara beberapa ekspresi. Sekarang, Anda mungkin +berpikir bahwa set karakter dan pergantian bekerja dengan cara yang sama. Tapi yang besar +perbedaan antara set karakter dan pergantian adalah bahwa set karakter bekerja di +tingkat karakter tetapi pergantian bekerja pada tingkat ekspresi. Misalnya, +ekspresi reguler `(T|t)he|car` berarti: baik (huruf besar `T` atau huruf kecil +`t`, diikuti dengan huruf kecil `h`, diikuti dengan huruf kecil `e`) ATAU +(huruf kecil `c`, diikuti dengan huruf kecil `a`, diikuti oleh +huruf kecil `r`). Perhatikan bahwa saya menyertakan tanda kurung untuk kejelasan, untuk menunjukkan bahwa salah satu ekspresi +dalam tanda kurung dapat dipenuhi dan itu akan cocok. + +
+"(T|t)he|car" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/fBXyX0/1) + +## 2.7 Karakter Spesial + +Garis miring terbalik `\` digunakan dalam ekspresi reguler untuk keluar dari karakter berikutnya. Ini +memungkinkan kita untuk menyertakan karakter yang dicadangkan seperti `{ } [ ] / \ + * . $ ^ | ?` sebagai karakter yang cocok. Untuk menggunakan salah satu karakter khusus ini sebagai karakter yang cocok, awali dengan `\`. + +Misalnya, ekspresi reguler `.` digunakan untuk mencocokkan karakter apa pun kecuali a +garis baru. Sekarang, untuk mencocokkan `.` dalam string input, ekspresi reguler +`(f|c|m)at\.?` artinya: huruf kecil `f`, `c` atau `m`, diikuti dengan huruf kecil +`a`, diikuti dengan huruf kecil `t`, diikuti dengan `.` . opsional +karakter. + +
+"(f|c|m)at\.?" => The fat cat sat on the mat. ++ +[Test the regular expression](https://regex101.com/r/DOc5Nu/1) + +## 2.8 Anchor Text + +Dalam ekspresi reguler, kami menggunakan jangkar untuk memeriksa apakah simbol yang cocok adalah +simbol awal atau simbol akhir dari string input. Jangkar terdiri dari dua jenis: +Tipe pertama adalah tanda sisipan `^` yang memeriksa apakah karakter yang cocok adalah yang pertama +karakter input dan tipe kedua adalah tanda dolar `$` yang memeriksa apakah cocok +karakter adalah karakter terakhir dari string input. + +### 2.8.1 Tanda Sisipan + +Simbol tanda sisipan `^` digunakan untuk memeriksa apakah karakter yang cocok adalah karakter pertama +dari string masukan. Jika kita menerapkan ekspresi reguler berikut `^a` (artinya 'a' harus +karakter awal) ke string `abc`, itu akan cocok dengan `a`. Tapi jika kita melamar +ekspresi reguler `^b` ke string di atas, itu tidak akan cocok dengan apa pun. +Karena dalam string `abc`, "b" bukanlah karakter awal. Mari lihat +di ekspresi reguler lain `^(T|t)he` yang artinya: huruf besar `T` atau +huruf kecil `t` harus menjadi karakter pertama dalam string, diikuti oleh a +huruf kecil `h`, diikuti dengan huruf kecil `e`. + +
+"(T|t)he" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/5ljjgB/1) + +
+"^(T|t)he" => The car is parked in the garage. ++ +[Uji ekspresi reguler](https://regex101.com/r/jXrKne/1) + +### 2.8.2 Tanda Dolar + +Tanda dolar `$` digunakan untuk memeriksa apakah karakter yang cocok adalah karakter terakhir +dalam tali. Misalnya, ekspresi reguler `(at\.)$` berarti: a +huruf kecil `a`, diikuti dengan huruf kecil `t`, diikuti oleh `.` +karakter dan matcher harus berada di akhir string. + +
+"(at\.)" => The fat cat. sat. on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/y4Au4D/1) + +
+"(at\.)$" => The fat cat. sat. on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/t0AkOd/1) + +## 3. Set Karakter Singkatan + +Ada sejumlah singkatan yang mudah digunakan untuk set karakter yang umum digunakan/ +ekspresi reguler: + +|Singkatan|Deskripsi| +|:----:|----| +|.|Karakter apa pun kecuali baris baru| +|\w|Mencocokkan karakter alfanumerik: `[a-zA-Z0-9_]`| +|\W|Mencocokkan karakter non-alfanumerik: `[^\w]`| +|\d|Mencocokkan digit: `[0-9]`| +|\D|Mencocokkan non-digit: `[^\d]`| +|\s|Mencocokkan karakter spasi putih: `[\t\n\f\r\p{Z}]`| +|\S|Mencocokkan karakter non-spasi: `[^\s]`| + +## 4. Melihat-lihat + +Melihat ke belakang dan melihat ke depan (juga disebut melihat sekeliling) adalah jenis tertentu dari +***grup non-penangkapan*** (digunakan untuk mencocokkan pola tetapi tanpa menyertakannya dalam pencocokan +daftar). Lookarounds digunakan ketika sebuah pola harus +didahului atau diikuti oleh pola lain. Misalnya, bayangkan kita ingin mendapatkan semua +angka yang didahului oleh karakter `$` dari string +`$4,44 dan $10,88`. Kami akan menggunakan ekspresi reguler berikut `(?<=\$)[0-9\.]*` +yang artinya: dapatkan semua angka yang mengandung karakter `.` dan didahului +oleh karakter `$`. Ini adalah lookaround yang biasa digunakan +ekspresi: + +|Simbol|Deskripsi| +|:----:|----| +|?=|Pandangan ke Depan Positif| +|?!|Melihat ke Depan Negatif| +|?<=|Tampilan Positif di Belakang| +|? +"(T|t)he(?=\sfat)" => The fat cat sat on the mat. + + +[Uji ekspresi reguler](https://regex101.com/r/IDDARt/1) + +### 4.2 Pandangan ke Depan Negatif + +Pandangan negatif ke depan digunakan ketika kita perlu mendapatkan semua kecocokan dari string input +yang tidak mengikuti pola tertentu. Sebuah lookahead negatif ditulis dengan cara yang sama seperti a +pandangan positif ke depan. Satu-satunya perbedaan adalah, alih-alih tanda sama dengan `=`, kami +gunakan tanda seru `!` untuk menunjukkan negasi yaitu `(?!...)`. Yuk simak berikut ini +ekspresi reguler `(T|t)he(?!\sfat)` yang artinya: dapatkan semua kata `The` atau `the` +dari string input yang tidak diikuti oleh karakter spasi dan kata `fat`. + +
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat. ++ +[Test the regular expression](https://regex101.com/r/V32Npg/1) + +### 4.3 Pandangan Positif ke Belakang + +Positif melihat ke belakang digunakan untuk mendapatkan semua kecocokan yang didahului oleh a +pola tertentu. Positif lookbehinds ditulis `(?<=...)`. Misalnya, +ekspresi reguler `(?<=(T|t)he\s)(fat|mat)` artinya: dapatkan semua kata `fat` atau `mat` +dari string input yang datang setelah kata `The` atau `the`. + +
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat. ++ +[Test the regular expression](https://regex101.com/r/avH165/1) + +### 4.4 Pandangan negatif ke belakang + +Pandangan belakang negatif digunakan untuk mendapatkan semua kecocokan yang tidak didahului oleh a +pola tertentu. Tampilan negatif di belakang ditulis `(? +"(?<!(T|t)he\s)(cat)" => The cat sat on cat. + + +[Test the regular expression](https://regex101.com/r/8Efx5G/1) + +## 5. Bendera + +Bendera juga disebut pengubah karena mereka memodifikasi output dari regular +ekspresi. Bendera ini dapat digunakan dalam urutan atau kombinasi apa pun, dan merupakan +bagian integral dari RegExp. + +|Bendera|Deskripsi| +|:----:|----| +|i|Tidak peka huruf besar/kecil: Pencocokan tidak peka huruf besar/kecil.| +|g|Penelusuran Global: Cocokkan semua instance, bukan hanya yang pertama.| +|m|Multiline: Karakter meta jangkar bekerja di setiap baris.| + +### 5.1 Tidak peka huruf besar/kecil + +Pengubah `i` digunakan untuk melakukan pencocokan case-insensitive. Misalnya, +ekspresi reguler `/The/gi` berarti: huruf besar `T`, diikuti dengan huruf kecil +`h`, diikuti oleh `e`. Dan di akhir ekspresi reguler +flag `i` memberitahu mesin ekspresi reguler untuk mengabaikan kasus ini. Sebisa kamu +lihat, kami juga menyediakan flag `g` karena kami ingin mencari pola di +seluruh string masukan. + +
+"The" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/dpQyf9/1) + +
+"/The/gi" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/ahfiuh/1) + +### 5.2 Pencarian Global + +Pengubah `g` digunakan untuk melakukan kecocokan global (menemukan semua kecocokan daripada +berhenti setelah pertandingan pertama). Misalnya, ekspresi reguler`/.(at)/g` +berarti: karakter apa pun kecuali baris baru, diikuti dengan huruf kecil `a`, +diikuti dengan huruf kecil `t`. Karena kami menyediakan flag `g` di akhir +ekspresi reguler, sekarang akan menemukan semua kecocokan dalam string input, bukan hanya yang pertama (yang merupakan perilaku default). + +
+"/.(at)/" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/jnk6gM/1) + +
+"/.(at)/g" => The fat cat sat on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/dO1nef/1) + +### 5.3 Multiline + +Pengubah `m` digunakan untuk melakukan pencocokan multi-baris. Seperti yang telah kita bahas sebelumnya, +jangkar `(^, $)` digunakan untuk memeriksa apakah suatu pola ada di awal input atau +tamat. Tetapi jika kita ingin jangkar bekerja pada setiap baris, kita menggunakan +bendera `m`. Misalnya, ekspresi reguler `/at(.)?$/gm` berarti: huruf kecil +`a`, diikuti dengan huruf kecil `t` dan, opsional, apa pun kecuali +baris baru. Dan karena flag `m`, mesin ekspresi reguler sekarang cocok dengan pola +di akhir setiap baris dalam sebuah string. + +
+"/.at(.)?$/" => The fat + cat sat + on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/hoGMkP/1) + +
+"/.at(.)?$/gm" => The fat + cat sat + on the mat. ++ +[Uji ekspresi reguler](https://regex101.com/r/E88WE2/1) + +## 6. Greedy vs Lazy Matching +Secara default, regex akan melakukan kecocokan greedy, yang berarti kecocokan akan berlangsung selama +mungkin. Kita dapat menggunakan `?` untuk mencocokkan dengan cara yang lazy, yang berarti pencocokan harus sesingkat mungkin. + +
+"/(.*at)/" => The fat cat sat on the mat.+ + +[Uji ekspresi reguler](https://regex101.com/r/AyAdgJ/1) + +
+"/(.*?at)/" => The fat cat sat on the mat.+ + +[Uji ekspresi reguler](https://regex101.com/r/AyAdgJ/2) + + +## Kontribusi + +* Buka pull request dengan peningkatan +* Diskusikan ide dalam issue +* Sebarkan materinya +* Jangkau dengan umpan balik apa pun [](https://twitter.com/ziishaned) + +## Lisensi + +MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)