Regular Expression di Java


Regular Expression Java (java regex) merupakan API untuk mendefinisikan pola untuk mencari dan memanipulasi string.

Ini biasanya digunakan untuk pembatasan string misalnya untuk nomor telepon,email dll.Untuk di java regex sendiri menyediakan 1 interface dan 3 class di package java.util.regex yaitu

  1. interface MatchResult
  2. class Matcher
  3. class Pattern
  4. class PatternSyntaxException
Class yang menyediakan fasilitas untuk menggunakan java regex adalah class Matcher dan Pattern jadi kita akan membahas di sekitar 2 class itu saja

Class Matcher

Regex engine yang digunakan untuk pencocokan pada sequence karakter



Method Deskripsi
boolean matches() mengetes regex cocok dengan pattern atau tidak
boolean find() menemukan expression selanjutnya yang cocok dengan pattern
boolean find(int start) menemukan expression selanjutnya yang cocok dengan pattern dimulai dari angka start
String group() mengembalikan subsequence yang cocok
int start() mengembalikan indeks awal dari subsequence yang cocok
int end() mengembalikan indeks akhir dari subsequence yang cocok
int groupCount() mengembalikan total jumlah subsequence yang cocok

Class Pattern


Method Deskripsi
static Pattern compile(String regex) compile regex yang diberikan dan mengembalikan instance dari Pattern
Matcher matcher(CharSequence input) membuat matcher untuk mencocokkannya dengan input yang diberikan
static boolean matches(String regex, CharSequence input) gabungan compile dan matcher,compile regex beserta mencocokkannya dengan input yang diberikan
String[] split(CharSequence input) memecah string input yang diberikan menggunakan pattern yang diberikan
String pattern() mengembalikan pattern regex

Contoh kode :

















Output :
true true true
Penggunaan  (.) menandakan single character ini saya kasih contoh lagi

import java.util.regex.*;
class Contoh{
  public static void main (String[] args){
  System.out.println(Pattern.matches(".a", "ba"));//true char kedua adalah a
  System.out.println(Pattern.matches(".a", "ab"));//false char kedua bukan a
  System.out.println(Pattern.matches("..a", "cba"));//true char ketiga adalah a
  System.out.println(Pattern.matches("..a", "abc"));//false char ketiga bukan a
  System.out.println(Pattern.matches(".a", "bca"));//false lebih dari 2 char


}

Kelas Karakter Regex

Kelas Karakter Deskripsi
[abc]) a b atau c
[^abc] semua karakter kecuali a b atau c (negasi)
[a-zA-Z] a sampai z atau A sampai Z
[a-m[n-p]] a sampai m atau n sampai p
[a-z&&[def]] a sampai z dan d e atau f
[a-z&&[^cd]] a sampai z kecuali c dan d
[a-z&&[^m-p]] a sampai z tapi tidak melalui m-p

Contoh pemakaiannya (kelas karakter hanya untuk single karakter karena kalau kita masukkan lebih dari satu karakter hasilnya otomatis false)

import java.util.regex.*;
class Contoh{
  public static void main (String[] args){
  System.out.println(Pattern.matches("[abc]", "a"));//true a termasuk
  System.out.println(Pattern.matches("[^adc]", "d"));//false kecuali a c dan d
  System.out.println(Pattern.matches("[a-fA-F]", "B"));//true B di dalam A-F
  System.out.println(Pattern.matches("[a-f[j-y]]", "b"));//true b di dalam  a-f
  System.out.println(Pattern.matches("[a-h&&[cdi]]", "i"));//false i di luar h


}
}

Penghitung Regex

Digunakan untuk menspesifikan kemunculan karakter

Penghitung Deskripsi
X? X muncul sekali atau tidak sama sekali
X+ X muncul sekali atau lebih
X* X muncul nol atau lebih
X{n} X hanya muncul n kali
X{n,} X muncul n kali atau lebih
X{m,n} X muncul setidaknya m kali tapi kurang dari n kali

Contoh Penggunaan :

import java.util.regex.*;
class Contoh{
  public static void main (String[] args){
  System.out.println("Penghitung ?");
  System.out.println(Pattern.matches("[abc]?", "abc"));//false a sudah muncul berarti b dan c tidak usah muncul
  System.out.println(Pattern.matches("[abc]?", "c"));//true c hanya muncul sekali
  System.out.println(Pattern.matches("[^abc]?", "b"));//false kecuali a,b atau c
  System.out.println(Pattern.matches("[^abc]?", "f"));//true f muncul hanya sekali
  System.out.println("Penghitung +");
  System.out.println(Pattern.matches("[abc]+", "abc"));//true a b dan c muncul
  System.out.println(Pattern.matches("[abc]+", "c"));//true c muncul
  System.out.println(Pattern.matches("[^abc]+", "b"));//false kecuali a,b atau c
  System.out.println(Pattern.matches("[^abc]+", "ef"));//true e dan f muncul

}
}

Meta Karakter Regex


Meta Karakter Deskripsi
. Karakter apa saja
\d Digit, [0-9]
\D non-Digit, [^0-9]
\s karakter whitespace seperti \n\r dll
\S selain karakter whitespace
\w karakter kata (angka juga termasuk)
\W karakter selain huruf
\b pembatas kata
\B selain pembatas kata

Mungkin untuk pembatas kata anda agak asing di sini.Pembatas kata (word boundary) adalah karakter selain huruf,angka di dalam string misalnya anda membuat String " Jangan di sini" maka word boundary adalah spasi sebelum huruf J,sesudah huruf n dan sesudah huruf i.Mudah-mudahan anda bisa paham

Contoh kode :
import java.util.regex.*;
class Contoh{
  public static void main (String[] args){
  System.out.println("Meta karakter \\d");
  System.out.println(Pattern.matches("\\d", "abc"));//false tidak ada digit
  System.out.println(Pattern.matches("\\d", "2"));//true digit dan hanya muncul sekali
  System.out.println(Pattern.matches("\\d", "52"));//false digit tapi muncul lebih dari sekali
  System.out.println(Pattern.matches("\\d", "2a"));//false digit dan char
  System.out.println("Meta karakter \\D");
  System.out.println(Pattern.matches("\\D", "a"));//true non-digit dan muncul sekali
  System.out.println(Pattern.matches("\\D", "2"));//false bukan non-digit
  System.out.println(Pattern.matches("\\D", "ab"));//false non-dogit tapi muncul lebih dari sekali
  System.out.println(Pattern.matches("\\D", "2a"));//false digit dan char
  System.out.println("Meta karakter \\d dan penghitung +");
  System.out.println(Pattern.matches("\\d+", "274"));//true digit dan muncul lebih dari sekali
}
}
Itu saja postingan mengenai regex.Untuk memahami regex ini memang butuh ketelitian tinggi saya harap anda menikmatinya saja..terima kasih..

Jangan spam atau promosi di sini jgn juga taruh link aktif kalau mau dapat backlink bisa taruh di profil saja (Name/URL)
EmoticonEmoticon