Ekspresi Reguler Java


Apa itu Ekspresi Reguler?

Ekspresi reguler adalah urutan karakter yang membentuk pola pencarian. Saat Anda mencari data dalam teks, Anda dapat menggunakan pola pencarian ini untuk menjelaskan apa yang Anda cari.

Ekspresi reguler dapat berupa karakter tunggal, atau pola yang lebih rumit.

Ekspresi reguler dapat digunakan untuk melakukan semua jenis pencarian teks dan operasi penggantian teks .

Java tidak memiliki kelas Regular Expression bawaan, tetapi kita dapat mengimpor java.util.regex paket untuk bekerja dengan ekspresi reguler. Paket termasuk kelas-kelas berikut:

  • PatternKelas - Mendefinisikan pola (untuk digunakan dalam pencarian)
  • MatcherKelas - Digunakan untuk mencari pola
  • PatternSyntaxExceptionKelas - Menunjukkan kesalahan sintaks dalam pola ekspresi reguler

Contoh

Cari tahu apakah ada kemunculan kata "w3schools" dalam sebuah kalimat:

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

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

Contoh Dijelaskan

Dalam contoh ini, Kata "w3schools" sedang dicari dalam sebuah kalimat.

Pertama, pola dibuat menggunakan Pattern.compile()metode. Parameter pertama menunjukkan pola mana yang sedang dicari dan parameter kedua memiliki tanda untuk menunjukkan bahwa pencarian harus peka huruf besar/kecil. Parameter kedua adalah opsional.

Metode matcher()ini digunakan untuk mencari pola dalam sebuah string. Ini mengembalikan objek Matcher yang berisi informasi tentang pencarian yang dilakukan.

Metode find()mengembalikan nilai true jika pola ditemukan dalam string dan false jika tidak ditemukan.



Bendera

Bendera dalam compile()metode mengubah cara pencarian dilakukan. Berikut adalah beberapa di antaranya:

  • Pattern.CASE_INSENSITIVE - Kasus huruf akan diabaikan saat melakukan pencarian.
  • Pattern.LITERAL - Karakter khusus dalam pola tidak akan memiliki arti khusus dan akan diperlakukan sebagai karakter biasa saat melakukan pencarian.
  • Pattern.UNICODE_CASE- Gunakan bersama dengan CASE_INSENSITIVEbendera untuk mengabaikan huruf di luar alfabet bahasa Inggris

Pola Ekspresi Reguler

Parameter pertama dari Pattern.compile()metode ini adalah polanya. Ini menjelaskan apa yang sedang dicari.

Tanda kurung digunakan untuk menemukan berbagai karakter:

Expression Description
[abc] Find one character from the options between the brackets
[^abc] Find one character NOT between the brackets
[0-9] Find one character from the range 0 to 9

Metakarakter

Metakarakter adalah karakter dengan arti khusus:

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

Kuantifier

Quantifier mendefinisikan kuantitas:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's

Catatan: Jika ekspresi Anda perlu mencari salah satu karakter khusus, Anda dapat menggunakan garis miring terbalik ( \ ) untuk menghindarinya. Di Jawa, garis miring terbalik dalam string perlu diloloskan sendiri, jadi dua garis miring terbalik diperlukan untuk keluar dari karakter khusus. Misalnya, untuk mencari satu atau beberapa tanda tanya, Anda dapat menggunakan ekspresi berikut: "\\?"