Membuka Kekuatan Ekspresi Reguler Tingkat Lanjut
Ekspresi Reguler (regex) menyediakan alat canggih untuk pencocokan pola dan manipulasi teks. Artikel ini mengeksplorasi konsep regex tingkat lanjut yang memberdayakan Anda untuk menangani tugas pemrosesan teks yang rumit secara tepat dan efisien.
Pernyataan Melihat ke Depan dan Melihat ke Belakang
Pernyataan melihat ke depan dan melihat ke belakang memungkinkan Anda mencocokkan suatu pola hanya jika didahului atau diikuti oleh pola lain. Mereka berguna untuk memastikan konteks tanpa memasukkannya ke dalam pertandingan.
- Pandangan ke Depan Positif
(?=...)
: Memastikan pola cocok hanya jika diikuti oleh ekspresi yang ditentukan. - Pandangan ke Depan Negatif
(?!...)
: Memastikan pola cocok hanya jika tidak diikuti oleh ekspresi yang ditentukan. - Tampilan Positif di belakang
(?<=...)
: Memastikan pola hanya cocok jika didahului oleh ekspresi yang ditentukan. - Tampilan Negatif di belakang
(?<!...)
: Memastikan pola cocok hanya jika tidak didahului oleh ekspresi yang ditentukan.
Contoh:
(?<=Mr\.\s|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}-)?(?(1)\d{3}-\d{4}|\d{7})
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 tidak 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.