Menguasai Regex: Cara Mencocokkan String yang Dimulai dengan Satu Substring dan Tidak Diakhiri dengan Substring Lain
Regex (ekspresi reguler) adalah alat yang sangat kuat untuk pemrosesan teks dan pencocokan pola. Apakah Anda seorang pengembang berpengalaman atau baru memulai, memahami cara memanfaatkan kemampuan regex dapat menghemat banyak waktu dan usaha. Dalam artikel ini, kita akan fokus pada masalah spesifik: membuat pola regex yang mencocokkan string yang dimulai dengan substring tertentu dan tidak diakhiri dengan substring lainnya.
Masalahnya
Misalkan Anda ingin memvalidasi string dalam aplikasi Anda. Anda perlu memastikan bahwa:
- String harus dimulai dengan substring tertentu, katakanlah
"foo"
. - String tidak boleh diakhiri dengan substring lain, misalnya
"bar"
.
Sebagai contoh, pencocokan yang valid termasuk:
foo123
foolish
foo
Sementara pencocokan yang tidak valid akan terlihat seperti:
foobar
foo bar
Ini bisa menjadi rumit, terutama jika Anda menggunakan regex dalam Java atau bahasa pemrograman lain yang mematuhi sintaks regex serupa.
Solusinya
Untuk mencapai ini, kita dapat memanfaatkan assertion lookbehind negatif dalam regex. Lookbehind memungkinkan kita untuk menentukan bahwa elemen tertentu (dalam kasus kita, akhir string) tidak boleh mengikuti substring yang ditentukan.
Membangun Pola Regex
Untuk skenario spesifik kita, kita dapat mendefinisikan pola regex kita sebagai berikut:
foo.*(?<!bar)$
Rincian Pola
foo
: Pola dimulai dengan karakter literal “foo”..*
: Titik.
mencocokkan karakter apa pun (kecuali pengakhiran baris) dan asterisk*
berarti nol atau lebih kemunculan karakter tersebut.(?<!bar)
: Ini adalah assertion lookbehind negatif. Ini memeriksa bahwa string tidak diakhiri dengan “bar”.$
: Ini menegaskan bahwa kita berada di akhir baris atau string.
Poin Kunci untuk Diingat
- Lookbehind Negatif: Fitur regex ini memungkinkan Anda untuk mengonfigurasi kondisi berdasarkan apa yang TIDAK ada di akhir string.
- Portabilitas: Pola regex yang diberikan bekerja secara efektif di Java dan telah diverifikasi dapat berfungsi dalam bahasa C# juga.
Contoh Penggunaan dalam Java
Berikut adalah cara Anda dapat menggunakan regex ini dalam program Java:
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String regex = "foo.*(?<!bar)$";
String[] testStrings = { "foobar", "foo123", "foolish", "foo bar" };
for (String testString : testStrings) {
if (Pattern.matches(regex, testString)) {
System.out.println(testString + " cocok.");
} else {
System.out.println(testString + " tidak cocok.");
}
}
}
}
Kesimpulan
Memahami cara memanipulasi regex untuk mencocokkan string berdasarkan kondisi tertentu memungkinkan Anda untuk menerapkan validasi yang lebih efektif dalam aplikasi Anda. Dengan menggunakan lookbehind negatif, Anda dapat memastikan bahwa string Anda memenuhi kriteria yang diinginkan tanpa terhalang oleh akhiran yang tidak diinginkan.
Biarkan pengetahuan Anda tentang regex memberdayakan praktik pengkodean Anda, dan Anda akan menemukan diri Anda menyederhanakan banyak tugas pemecahan masalah yang kompleks dalam perjalanan pengembangan perangkat lunak Anda.