From e5058aee378c72356a84a792c941715b7235f620 Mon Sep 17 00:00:00 2001 From: Mari Adhari <74663874+mariadhari6@users.noreply.github.com> Date: Sat, 13 Aug 2022 16:34:16 +0700 Subject: [PATCH 1/3] Create README-id.md --- translations/README-id.md | 604 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 604 insertions(+) create mode 100644 translations/README-id.md 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 @@ +

+
+ + Learn Regex + +

+ +## Terjemahan: + +* [English](README.md) +* [German](translations/README-de.md) +* [Español](translations/README-es.md) +* [Français](translations/README-fr.md) +* [Português do Brasil](translations/README-pt_BR.md) +* [中文版](translations/README-cn.md) +* [日本語](translations/README-ja.md) +* [한국어](translations/README-ko.md) +* [Turkish](translations/README-tr.md) +* [Greek](translations/README-gr.md) +* [Magyar](translations/README-hu.md) +* [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) + + +## Apa itu Ekspresi Reguler? + +

+ + Download PDF + +

+ +> Ekspresi reguler adalah sekelompok karakter atau simbol yang digunakan untuk menemukan pola tertentu dalam sebuah teks. + +Ekspresi reguler adalah pola yang dicocokkan dengan string subjek dari +kiri ke kanan. Ekspresi reguler digunakan untuk mengganti teks dalam string, +memvalidasi formulir, mengekstrak substring dari string berdasarkan kecocokan pola, +dan masih banyak lagi. Istilah "ekspresi reguler" adalah suap, jadi kamu biasanya akan +temukan istilah yang disingkat "regex" atau "regexp". + +Bayangkan Anda sedang menulis aplikasi dan Anda ingin menetapkan aturan kapan a +pengguna memilih nama pengguna mereka. Kami ingin mengizinkan nama pengguna berisi huruf, +angka, garis bawah, dan tanda hubung. Kami juga ingin membatasi jumlah karakter +di username agar tidak terlihat jelek. Kita dapat menggunakan ekspresi reguler berikut untuk +memvalidasi nama pengguna: + +

+

+ Regular expression +

+ +Ekspresi reguler di atas dapat menerima string `john_doe`, `jo-hn_doe` dan +`john12_as`. Itu tidak cocok dengan `Jo` karena string itu berisi huruf besar +surat dan juga terlalu pendek. + +## Table of Contents + +- [Pencocokan Dasar](#1-basic-matchers) +- [Karakter Meta](#2-meta-characters) + - [Perhentian Penuh](#21-the-full-stop) + - [Set Karakter](#22-character-sets) + - [Set Karakter yang Dinegasikan](#221-negated-character-sets) + - [Pengulangan](#23-repetitions) + - [Tanda Bintang](#231-the-star) + - [Tanda Tambah](#232-the-plus) + - [Tanda Tanya](#233-the-question-mark) + - [Kurung Kurawal](#24-braces) + - [Menangkap Grup](#25-capturing-groups) + - [Grup yang Tidak Menangkap](#251-non-capturing-groups) + - [Alternasi](#26-alternation) + - [Karakter Spesial](#27-escaping-special-characters) + - [Anchor Text](#28-anchors) + - [Tanda Sisipan](#281-the-caret) + - [Tanda Dollar](#282-the-dollar-sign) +- [Set Karakter Singkatan](#3-shorthand-character-sets) +- [Melihat](#4-lookarounds) + - [Pandangan ke Depan Positif](#41-positive-lookahead) + - [Pandangan ke Depan Negatif](#42-negative-lookahead) + - [Pandangan Positif ke Belakang](#43-positive-lookbehind) + - [Pandangan negatif ke belakang](#44-negative-lookbehind) +- [Bendera](#5-flags) + - [Tidak peka huruf besar/kecil](#51-case-insensitive) + - [Pencarian Global](#52-global-search) + - [Multiline](#53-multiline) +- [Greedy vs Lazy Matching](#6-greedy-vs-lazy-matching) + +## 1. Pencocokan Dasar + +Ekspresi reguler hanyalah pola karakter yang kita gunakan untuk melakukan +pencarian dalam sebuah teks. Misalnya, ekspresi reguler `the` berarti: huruf +`t`, diikuti huruf `h`, diikuti huruf `e`. + +
+"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 [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/ziishaned.svg?style=social&label=Follow%20%40ziishaned)](https://twitter.com/ziishaned) + +## Lisensi + +MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned) From 881a4bd4f17bbecbe66d5b2a5ab94802a23ec891 Mon Sep 17 00:00:00 2001 From: Mari Adhari <74663874+mariadhari6@users.noreply.github.com> Date: Sat, 13 Aug 2022 16:38:26 +0700 Subject: [PATCH 2/3] update: add indonesian translation --- README.md | 1 + 1 file changed, 1 insertion(+) 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) From 172a004d4643d67f40702ad55c701acfed467aba Mon Sep 17 00:00:00 2001 From: Mari Adhari <74663874+mariadhari6@users.noreply.github.com> Date: Sat, 13 Aug 2022 16:49:57 +0700 Subject: [PATCH 3/3] add: indonesian image translation --- img/regexp-id.png | Bin 0 -> 7470 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/regexp-id.png diff --git a/img/regexp-id.png b/img/regexp-id.png new file mode 100644 index 0000000000000000000000000000000000000000..9a93f87cda2e234dcaa3caaee457b8f57064b6a2 GIT binary patch literal 7470 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