Traffine I/O

Bahasa Indonesia

2023-02-24

Panduan Regular Expression (Regex)

Apa itu Regex

Ekspresi reguler, yang umum dikenal sebagai Regex, adalah alat yang kuat digunakan untuk mencocokkan, mencari, dan memanipulasi pola teks. Mereka adalah urutan karakter yang menentukan pola pencarian, memungkinkan Anda untuk menemukan dan mengganti karakter, kata, atau pola tertentu dalam teks.

Regex secara luas digunakan dalam pemrograman, pengembangan web, dan analisis data untuk mempermudah tugas pemrosesan teks. Dengan menggunakan Regex, Anda dapat menghemat waktu dan usaha dengan mengotomatisasi operasi teks yang berulang, dan melakukan operasi pencarian dan penggantian yang kompleks dengan mudah.

Manfaat penggunaan Ekspresi Reguler

Regex memiliki manfaat berikut:

  • Efisiensi yang lebih tinggi
    Regex memungkinkan Anda mencari dan mengganti pola teks dengan cepat dan akurat, mengurangi waktu dan usaha yang diperlukan untuk manipulasi teks.

  • Akurasi yang lebih besar
    Dengan menentukan pola yang spesifik untuk dicocokkan, Anda dapat memastikan bahwa hanya teks yang dimaksudkan yang akan cocok, mengurangi kesalahan.

  • Fleksibilitas
    Regex dapat digunakan untuk mencocokkan berbagai pola, termasuk huruf, angka, simbol, dan spasi putih, menjadikannya alat yang serbaguna untuk tugas pemrosesan teks.

Aplikasi umum Ekspresi Reguler

Regex memiliki aplikasi umum berikut:

  • Ekstraksi dan penguraian data
    Regex umumnya digunakan untuk mengekstrak informasi tertentu dari jumlah data besar, seperti nama, tanggal, nomor telepon, dan alamat email.

  • Validasi dan pengaturan teks
    Regex dapat digunakan untuk memvalidasi dan memformat masukan teks, seperti memastikan bahwa alamat email pengguna valid atau nomor telepon diformat dengan benar.

  • Pencarian dan penggantian
    Regex dapat digunakan untuk mencari pola tertentu dalam teks dan menggantinya dengan pola baru, menjadikannya alat yang berguna untuk tugas seperti refactoring kode atau pengeditan konten.

Syntax Regex

Saya akan membahas sintaks dan pola dasar Regex, serta penggunaan pengukur dan alternatif.

Sintaks dan Pola Dasar

Sintaks paling dasar dalam Regex adalah satu karakter tunggal, yang cocok dengan karakter itu tepat pada teks. Misalnya, pola "a" akan cocok dengan huruf "a" pada teks. Namun, Regex memungkinkan pola yang lebih kompleks, seperti:

  • Kelas Karakter
    [a-z] cocok dengan huruf kecil apa pun antara "a" dan "z".

  • Meta-Karakter
    \d cocok dengan angka apa pun, \w cocok dengan karakter alfanumerik apa pun, dan \s cocok dengan karakter spasi putih apa pun.

  • Anchor
    ^ cocok dengan awal baris, dan $ cocok dengan akhir baris.

Pengukur

Pengukur memungkinkan Anda untuk menentukan berapa kali karakter atau pola harus cocok pada teks. Pengukur paling umum adalah:

  • *, yang cocok dengan nol atau lebih kemunculan karakter atau pola sebelumnya.
  • +, yang cocok dengan satu atau lebih kemunculan karakter atau pola sebelumnya.
  • ?, yang cocok dengan nol atau satu kemunculan karakter atau pola sebelumnya.

Misalnya, pola ab*c akan cocok dengan "ac", "abc", "abbc", "abbbc", dan seterusnya.

Alternatif

Alternatif memungkinkan Anda untuk mencocokkan salah satu dari beberapa pilihan. Sintaks untuk alternatif adalah karakter garis vertikal "|". Misalnya, pola "cat|dog" akan cocok dengan "cat" atau "dog" pada teks.

Karakter khusus dan kelas khusus

Ekspresi Reguler (Regex) menggunakan karakter khusus dan kelas karakter khusus untuk mencocokkan pola karakter tertentu dalam data teks.

Karakter khusus

Ekspresi Reguler (Regex) menggunakan berbagai karakter khusus untuk mencocokkan pola tertentu dalam data teks. Berikut adalah daftar karakter khusus yang umum digunakan dalam Regex:

  • . : Mencocokkan satu karakter kecuali newline
  • * : Mencocokkan nol atau lebih kemunculan karakter atau grup sebelumnya
  • + : Mencocokkan satu atau lebih kemunculan karakter atau grup sebelumnya
  • ? : Mencocokkan nol atau satu kemunculan karakter atau grup sebelumnya
  • ^ : Mencocokkan awal string
  • $ : Mencocokkan akhir string
  • [ ] : Mencocokkan satu karakter dalam kurung siku
  • [^ ] : Mencocokkan satu karakter yang tidak ada dalam kurung siku
  • | : Mencocokkan salah satu ekspresi di kiri atau kanan
  • () : Membuat grup penangkapan

Berikut adalah beberapa contoh bagaimana karakter khusus ini dapat digunakan dalam Regex:

  • Pola a.b cocok dengan setiap string tiga karakter yang dimulai dengan a dan diakhiri dengan b, seperti acb atau aab.
  • Pola ab*c cocok dengan setiap string yang dimulai dengan a, diakhiri dengan c, dan memiliki nol atau lebih kemunculan huruf b di antaranya, seperti ac, abc, atau abbbc.
  • Pola ab+c cocok dengan setiap string yang dimulai dengan a, diakhiri dengan c, dan memiliki satu atau lebih kemunculan huruf b di antaranya, seperti abc atau abbbc.
  • Pola colou?r cocok dengan color atau colour, karena karakter u bersifat opsional.
  • Pola ^[A-Z] cocok dengan setiap string yang diawali dengan huruf kapital.
  • Pola @[a-z]+\.[a-z]{2,3}$ cocok dengan setiap alamat email yang berformat username@domain.com atau username@domain.co.uk.

Kelas Khusus

Regular Expression (Regex) menggunakan kelas karakter khusus untuk mencocokkan jenis karakter tertentu dalam data teks. Berikut adalah daftar kelas karakter khusus yang umum digunakan dalam Regex:

  • \d : Cocok dengan karakter digit apa pun (0-9)
  • \D : Cocok dengan karakter non-digit apa pun
  • \w : Cocok dengan karakter kata apa pun (a-z, A-Z, 0-9, _)
  • \W : Cocok dengan karakter bukan kata
  • \s : Cocok dengan karakter spasi apa pun (spasi, tab, newline)
  • \S : Cocok dengan karakter bukan spasi
  • . : Cocok dengan karakter apa pun kecuali newline
  • [ ] : Cocok dengan satu karakter dalam kurung siku
  • [^ ] : Cocok dengan satu karakter yang tidak ada dalam kurung siku

Berikut adalah beberapa contoh bagaimana kelas karakter khusus ini dapat digunakan dalam Regex:

  • Pola \d{3}-\d{2}-\d{4} cocok dengan setiap string yang mengikuti format nomor asuransi sosial, seperti 123-45-6789.
  • Pola \b\w{5}\b cocok dengan setiap kata lima huruf dalam string teks, seperti apple atau banana.
  • Pola \s\d{3}\s cocok dengan setiap string yang memiliki karakter spasi diikuti oleh tiga digit diikuti oleh karakter spasi lainnya, seperti 123 atau 456.
  • Pola [^aeiou] cocok dengan setiap karakter tunggal yang bukan vokal.

Pengelompokan dan Penangkapan

Regex juga mendukung pengelompokan dan penangkapan. Dalam artikel ini, saya akan membahas apa itu pengelompokan dan penangkapan dan bagaimana cara menggunakannya dalam Regex.

  • Pengelompokan
    Pengelompokan dalam Regex memungkinkan Anda untuk memperlakukan sekelompok karakter sebagai satu unit, yang dapat dihitung, dipertukarkan, atau diulang. Untuk membuat grup dalam Regex, Anda memasukkan grup ke dalam tanda kurung. Sebagai contoh, pola (ab)+ akan cocok dengan satu atau lebih kejadian huruf "ab" dalam teks.

  • Penangkapan
    Penangkapan dalam Regex memungkinkan Anda untuk mengekstrak bagian tertentu dari teks yang cocok untuk pengolahan atau analisis lebih lanjut. Untuk membuat grup penangkapan dalam Regex, Anda memasukkan grup ke dalam tanda kurung, dan teks yang cocok di dalam grup dapat diacu nanti menggunakan referensi mundur. Sebagai contoh, pola ([a-z]+)@\w+.\w+ akan cocok dengan alamat email dalam teks dan menangkap bagian username dari alamat email untuk pengolahan lebih lanjut.

Dengan menggunakan pengelompokan dan penangkapan dalam Regex, Anda dapat membuat pola yang lebih kompleks dan spesifik, serta mengekstrak bagian-bagian tertentu dari teks yang cocok untuk pengolahan atau analisis lebih lanjut. Dengan menggunakan penangkapan dan grup, Anda dapat membuat pola yang lebih canggih yang dapat cocok dan memanipulasi teks dengan lebih presisi dan akurasi.

Menggunakan Regular Expression dalam Bahasa Pemrograman

Python dan Javascript adalah dua bahasa pemrograman populer yang mendukung Regex secara native. Dalam artikel ini, saya akan membahas cara menggunakan Regular Expression dalam Python dan JavaScript.

Python

Python menyediakan dukungan bawaan untuk Regex melalui modul re. Sintaks dasar untuk menggunakan Regex di Python adalah:

python
import re

# define a pattern
pattern = r'some_regex_pattern'

# search for the pattern in a string
match = re.search(pattern, some_text)

# check if the pattern was found
if match:
  # do something with the match
else:
  # handle the case where the pattern was not found

Dalam contoh ini, kita mengimpor modul re dan mendefinisikan pola regex. Kita kemudian mencari pola dalam string yang diberikan menggunakan metode re.search(). Jika pola ditemukan, kita dapat melakukan sesuatu dengan kecocokannya. Jika pola tidak ditemukan, kita dapat menanganinya dengan tepat.

JavaScript

JavaScript juga menyediakan dukungan bawaan untuk Regex melalui objek RegExp. Sintaks dasar untuk menggunakan Regex di JavaScript adalah:

javascript
// define a pattern
var pattern = /some_regex_pattern/;

// search for the pattern in a string
var match = some_text.match(pattern);

// check if the pattern was found
if (match !== null) {
  // do something with the match
} else {
  // handle the case where the pattern was not found
}

Dalam contoh ini, kita mendefinisikan pola regex menggunakan sintaks /regex_patter/. Kita kemudian mencari pola dalam string yang diberikan menggunakan metode match() dari objek string. Jika pola ditemukan, kita dapat melakukan sesuatu dengan kecocokannya. Jika pola tidak ditemukan, kita dapat menanganinya dengan tepat.

Contoh Kasus Penggunaan Regex di Dunia Nyata

Regular Expressions (Regex) dapat diterapkan pada berbagai skenario dunia nyata untuk pencocokan dan manipulasi teks. Berikut adalah contoh bagaimana Regex dapat digunakan dalam validasi email dan formatting nomor telepon.

Validasi Email

Regex dapat digunakan untuk memvalidasi apakah alamat email terformat dengan benar. Berikut adalah contoh pola regex yang dapat digunakan untuk memvalidasi alamat email di Python:

python
import re

email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'

def validate_email(email):
    return re.match(email_pattern, email) is not None

Pola ini memastikan bahwa alamat email dimulai dengan satu atau lebih huruf, angka, atau karakter khusus, diikuti oleh tanda @, kemudian satu atau lebih huruf, angka, atau tanda hubung, diikuti oleh titik dan dua atau lebih huruf.

Formatting Nomor Telepon

Regex juga dapat digunakan untuk memformat nomor telepon secara konsisten. Berikut adalah contoh pola regex yang dapat digunakan untuk memformat nomor telepon Amerika Serikat dengan tanda hubung di JavaScript:

javascript
function format_phone_number(phone_number) {
    const cleaned = ('' + phone_number).replace(/\D/g, '');
    const match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/);
    if (match) {
        return match[1] + '-' + match[2] + '-' + match[3];
    }
    return phone_number;
}

Pola ini menghapus karakter non-angka dari nomor telepon dan kemudian memformatnya dengan tanda hubung dalam format nomor telepon AS standar yaitu xxx-xxx-xxxx.

Ekstraksi dan Pemrosesan Data

Regex dapat digunakan untuk mengekstrak data tertentu dari string teks atau file. Berikut adalah contoh pola regex yang dapat digunakan untuk mengekstrak alamat email dari file teks di Python:

python
import re

email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'

with open('textfile.txt') as f:
    for line in f:
        emails = re.findall(email_pattern, line)
        for email in emails:
            print(email)

Pola ini mencari string yang sesuai dengan format alamat email dan mengekstraknya dari file teks. Metode re.findall() mengembalikan daftar semua kecocokan yang ditemukan dalam file teks.

Pencarian dan Penggantian Teks

Regex juga dapat digunakan untuk mencari dan menggantikan pola teks tertentu dengan pola teks lain. Berikut adalah contoh pola regex yang dapat digunakan untuk mengganti semua kemunculan kata "color" dengan "colour" dalam file teks di JavaScript:

javascript
const fs = require('fs');

fs.readFile('textfile.txt', 'utf8', function(err, data) {
    if (err) throw err;
    const result = data.replace(/color/g, 'colour');
    fs.writeFile('textfile.txt', result, 'utf8', function(err) {
        if (err) throw err;
    });
});

Pola ini mencari semua kemunculan kata "color" dalam file teks dan menggantinya dengan "colour" menggunakan metode replace().

UUID

UUID (Universally Unique Identifier) adalah identifikasi unik 128-bit yang umum digunakan untuk mengidentifikasi resource dalam sistem komputer. UUID biasanya terlihat seperti ini:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

Berikut adalah contoh ekspresi reguler (Regex) yang dapat digunakan untuk mencocokkan dan memvalidasi string UUID:

^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Menganalisis pola Regex, pola tersebut terdiri dari:

  • ^: Cocokkan awal dari string.
  • [0-9a-fA-F]: Cocokkan setiap karakter digit heksadesimal.
  • {8}: Cocokkan tepat 8 kali kemunculan karakter atau grup sebelumnya.
  • \-: Cocokkan karakter tanda hubung (-) literal.
  • $: Cocokkan akhir dari string.

Dengan menggunakan pola Regex ini, Anda dapat memvalidasi apakah sebuah string tertentu merupakan UUID yang valid atau tidak. Perhatikan bahwa pola ini mengasumsikan bahwa UUID berada dalam format kanoniknya, yang menggunakan tanda hubung untuk memisahkan segmen UUID yang berbeda. Jika UUID berada dalam format yang berbeda, seperti semua huruf kecil atau semua huruf besar, Anda mungkin perlu memodifikasi pola tersebut sesuai.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!