Menguasai Ekspresi Reguler Kompleks
Ekspresi Reguler (regex) adalah alat serbaguna untuk pencocokan pola dan manipulasi teks. Tutorial ini mengeksplorasi teknik regex tingkat lanjut yang membantu Anda mengelola skenario pemrosesan teks kompleks dengan lebih efektif.
Lihatlah ke Balik Pernyataan
Pernyataan lihat ke belakang memungkinkan Anda mencocokkan suatu pola hanya jika pola tersebut didahului oleh pola lain. Hal ini berguna untuk memastikan konteks tanpa memasukkannya ke dalam pertandingan.
- Tampilan Positif di belakang
(?<=...)
: Cocok dengan pola hanya jika didahului oleh ekspresi yang ditentukan. - Tampilan Negatif di belakang
(?<!...)
: Cocok dengan pola hanya jika tidak didahului oleh ekspresi yang ditentukan.
Contoh:
(?<=Mr\.|Mrs\.)\s[A-Z]\w+
Regex ini cocok dengan nama yang diawali dengan "Mr." atau "Mrs.".
Pola Bersyarat
Pola bersyarat memungkinkan Anda mencocokkan pola yang berbeda berdasarkan apakah kondisi tertentu terpenuhi. Sintaksnya adalah (?(kondisi)pola-benar|pola-salah)
.
Contoh:
(\d{3}-)?\d{3}-\d{4}
Regex ini cocok dengan nomor telepon dengan atau tanpa kode area.
Subrutin dan Rekursi
Subrutin dan rekursi memungkinkan Anda menggunakan kembali pola dalam regex yang sama atau mencocokkan struktur bersarang. Hal ini sangat berguna untuk data yang kompleks dan bertumpuk.
Contoh:
(?<group>\((?>[^()]+|(?&group))*\))
Regex ini mencocokkan tanda kurung seimbang dengan level bertingkat.
Pengukur Posesif
Quantifier posesif mencegah mesin regex melakukan backtracking, yang dapat meningkatkan kinerja ketika Anda ingin memastikan bahwa tidak terjadi backtracking.
Contoh:
\w++
Regex ini mencocokkan urutan karakter kata secara posesif, artinya ekspresi reguler ini tidak akan melepaskan karakter setelah dicocokkan.
Menggunakan Bendera untuk Pencocokan yang Ditingkatkan
Bendera regex mengubah perilaku pencocokan pola. Beberapa bendera umum meliputi:
- 'i': Pencocokan peka huruf besar-kecil.
- 'm': Mode multiline, memengaruhi perilaku
^
dan$
. - 's': Mode dotall, memungkinkan
.
mencocokkan karakter baris baru. - 'x': Abaikan spasi dan izinkan komentar dalam pola agar mudah dibaca.
Contoh:
/pattern/imsx
Pola ini menerapkan mode case-insensitive, multiline, dotall, dan extended.
Contoh dalam Bahasa Pemrograman
Berikut beberapa contoh penggunaan regex tingkat lanjut dengan Python dan JavaScript:
Contoh Python
import re
# Match a name preceded by Mr. or Mrs.
pattern = r'(?<=Mr\.|Mrs\.)\s[A-Z]\w+'
text = 'Mr. Smith and Mrs. Johnson'
matches = re.findall(pattern, text)
for match in matches:
print('Match found:', match)
Contoh JavaScript
// Match a name preceded by Mr. or Mrs.
const pattern = /(?<=Mr\.|Mrs\.)\s[A-Z]\w+/g;
const text = 'Mr. Smith and Mrs. Johnson';
const matches = text.match(pattern);
if (matches) {
matches.forEach(match => console.log('Match found:', match));
}
Kesimpulan
Teknik regex tingkat lanjut seperti pernyataan lihat ke belakang, pola kondisional, subrutin, rekursi, dan bilangan posesif memperluas kemampuan regex untuk pemrosesan teks yang kompleks. Menguasai konsep-konsep ini memungkinkan Anda menangani tugas-tugas pencocokan dan manipulasi yang canggih dengan efisiensi dan presisi yang lebih besar.