Sunday, June 8, 2008

Regular Expression di Java

Regular expression (regex) adalah konstruksi yang sangat powerful dalam mengolah teks. Berangkat dari popularitas penggunaannya di PERL, regex ini sekarang umum dijumpai di hampir semua bahasa pemrograman yang populer termasuk Java.

Jadi, bagaimana kita menggunakannya di Java ?

Mudah, ikuti saja tips berikut ini ;)

Mencocokkan suatu pola teks di dalam objek bertipe String

Untuk mencocokkan suatu pola teks, kita gunakan metode matches() dari String object. Sintaksnya adalah sebagai berikut:

boolean java.lang.String.matches(String regex)

Parameter yang digunakan adalah suatu pola atau pattern - yang merupakan suatu objek String - dan method ini mengembalikan nilai boolean true jika pola yang dibandingkan cocok. Begitu juga sebaliknya, akan mengembalikan nilai false jika pola yang dibandingkan dengan teks tidak cocok.

Contoh 1:

if(textToBeMatched.matches("[a-z A-Z]+"))
System.out.println("Teks cocok dengan sederetan karakter alfabet");


Contoh 2:


public class RegexTest {

public static void testPhoneNumber(String phoneNumber)
{
String phoneNumberPattern = "^\\+{0,1}[\\d]+[-\\d]+\\d$";

if(phoneNumber.matches(phoneNumberPattern))
System.out.println(phoneNumber + " adalah pola nomor telepon !");
else
System.out.println(phoneNumber + " bukan merupakan pola nomor telepon yang valid !");
}
public static void main(String[] args)
{
testPhoneNumber("+6221-3011-9353"); //output adalah nomor telepon yang benar
testPhoneNumber("-6221-3011-9353"); //output adalah nomor telepon yang salah
}
}


Mengganti teks yang cocok dengan suatu pola

Untuk mengganti suatu teks yang cocok dengan suatu pola kita dapat menggunakan dua class dari package java.util, yaitu class Pattern dan Matcher.

Pertama, kita menginisialisasi pola dengan method compile() dari class Pattern. Method ini sekaligus akan mengembalikan satu objek Pattern. Kita kemudian dapat memberikan teks yang akan diolah ke method matcher() yang kembali akan membuat objek Matcher. Sekarang kita tinggal memanipulasi teks dalam objek tersebut. Caranya adalah dengan menggunakan method replaceAll() method dari objek Matcher.



Contoh:


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexReplacementTest {

public static String censoredPhoneNumber(String phoneNumber)
{
String phonePattern = "(\\+{0,1}[\\d]+[-\\d]+\\d).*";

Pattern pattern = Pattern.compile(phonePattern);
Matcher matcher = pattern.matcher(phoneNumber);

return matcher.replaceAll("*sensor*");
}

public static void main(String[] args)
{
String phoneNo = "Nomor telepon saya adalah +6221-3011-9353";

System.out.println(censoredPhoneNumber(phoneNo));

}
}

Kesimpulan

Aritkel blog ini menunjukkan 2 penggunaan regular expression :
  1. mencocokkan pola teks dengan method matches() yang ada pada setiap objek String.
  2. mengganti suatu text yang cocok dengan suatu pola dengan bantuan dua class helper, Pattern and Matcher.

Mudah-mudahan ini dapat membantu Anda untuk memecahkan masalah penggunaan regular expression di Java.

Salam,

2 comments:

Anonymous said...

Simple but sure.... aku baru tau bisa begini.... Maklum masih cupu

Klo mau explore lebih jauh tentang variasi penggunaan dari regular-expression ini, mesti baca2 dimana om?

Nice Posting.

Feris Thia said...

Untuk regular expression situs paling ok ada di http://www.regular-expressions.info/.

Sedangkan contoh-contoh variasi penggunaan Regex ada di http://www.exampledepot.com/egs/java.util.regex/pkg.html.

Semoga berguna dan juga Terima kasih atas apresiasinya untuk artikel ini :)