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
- interface MatchResult
- class Matcher
- class Pattern
- 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 truePenggunaan (.) 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..
Post a Comment for "Regular Expression di Java"
Jangan spam atau promosi di sini jgn juga taruh link aktif kalau mau dapat backlink bisa taruh di profil saja (Name/URL)