Menyelami Lebih Dalam Ekspresi Reguler Tingkat Lanjut
Ekspresi Reguler (regex) adalah alat yang ampuh untuk pencocokan pola dan manipulasi teks. Melampaui dasar-dasarnya, tutorial ini mengeksplorasi konsep regex tingkat lanjut untuk menangani tugas pemrosesan teks yang kompleks.
Pernyataan Penelusuran Tingkat Lanjut
Penegasan penelusuran memungkinkan Anda mencocokkan suatu pola hanya jika pola tersebut didahului atau diikuti oleh pola lain, tanpa menyertakan teks di sekitarnya dalam pencocokan tersebut.
- 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:
(?<=\$)\d+
Regex ini cocok dengan angka yang diawali dengan tanda dolar.
Grup Atom
Grup atom mencegah kemunduran setelah upaya pencocokan dilakukan di dalam grup. Mereka berguna untuk meningkatkan kinerja dengan menghindari kemunduran yang tidak perlu.
Contoh:
(?>\d+)\b
Regex ini cocok dengan urutan digit sebagai gugus atom, mencegah kemunduran.
Referensi Balik
Referensi balik memungkinkan Anda menggunakan kembali grup yang diambil sebelumnya dalam pola regex Anda. Ini berguna untuk mencocokkan substring yang berulang.
Contoh:
(\b\w+)\s+\1
Regex ini cocok dengan kata yang diikuti oleh kata yang sama.
Grup Bernama
Grup bernama memungkinkan Anda menetapkan nama untuk menangkap grup, membuat ekspresi reguler Anda lebih mudah dibaca dan data yang cocok lebih mudah untuk dirujuk.
Contoh:
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
Regex ini mencocokkan tanggal dalam format YYYY-MM-DD dan memberi nama grup tahun, bulan, dan hari.
Pola Rekursif
Pola rekursif memungkinkan regex mencocokkan struktur bersarang, seperti tanda kurung seimbang. Ini adalah fitur lanjutan yang didukung oleh beberapa mesin regex.
Contoh:
\((?>[^()]+|(?R))*\)
Regex ini cocok dengan tanda kurung seimbang.
Menggunakan Regex dalam Berbagai Bahasa Pemrograman
Regex didukung dalam banyak bahasa pemrograman, seringkali dengan sedikit variasi dalam sintaksis dan kemampuan. Berikut adalah contoh dalam Python dan JavaScript:
Contoh Python
import re
# Match a word followed by the same word
pattern = r'(\b\w+)\s+\1'
text = 'hello hello world'
match = re.search(pattern, text)
if match:
print('Match found:', match.group())
else:
print('No match found')
Contoh JavaScript
// Match a word followed by the same word
const pattern = /(\b\w+)\s+\1/;
const text = 'hello hello world';
const match = text.match(pattern);
if (match) {
console.log('Match found:', match[0]);
} else {
console.log('No match found');
}
Kesimpulan
Konsep regex tingkat lanjut seperti pernyataan penelusuran, grup atom, referensi balik, grup bernama, dan pola rekursif dapat meningkatkan kemampuan pemrosesan teks Anda secara signifikan. Dengan menguasai teknik ini, Anda dapat menangani tugas pencocokan dan manipulasi yang rumit dengan efisiensi dan presisi yang lebih tinggi.