JavaRush /Java Blog /Random-ID /Ekspresi Reguler di Java
terranum
Level 28
Milan

Ekspresi Reguler di Java

Dipublikasikan di grup Random-ID
RegExEkspresi reguler adalah sejenis pola yang dapat diterapkan pada teks (String, di Java). Java menyediakan paket java.util.regex untuk mencocokkan ekspresi reguler. Ekspresi reguler sangat mirip dengan bahasa pemrograman Perl dan sangat mudah dipelajari. Ekspresi reguler cocok dengan teks (sebagiannya) atau tidak. * Jika ekspresi reguler cocok dengan sepotong teks, maka kita dapat menemukannya. ** Jika ekspresi regulernya adalah gabungan, maka kita dapat dengan mudah mengetahui bagian ekspresi reguler mana yang cocok dengan bagian teks mana.

Contoh pertama

Ekspresi reguler " [a-z] +" cocok dengan semua huruf kecil dalam teks. [a-z]berarti karakter apa pun dari ahingga zinklusif, dan +berarti "satu atau lebih" karakter. Anggaplah kita menyediakan string "kode 2 belajar tutorial java". Cara melakukan ini di Java Pertama, Anda harus membuat template:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Selanjutnya Anda harus membuat matcherteks dengan mengirimkan pesan pada diagram:
Matcher m = p.matcher(“code 2 learn java tutorial”);
CATATAN: Tidak ada konstruktor Pattern, Matcherkami membuatnya menggunakan metode kelas Pattern. Pattern Class:Objek kelas merupakan representasi dari ekspresi reguler. Kelas Pattern tidak menyediakan konstruktor publik apa pun. Untuk membuat templat, Anda harus terlebih dahulu memanggil salah satu metode statis publik, yang kemudian mengembalikan objek kelas tersebut Pattern. Metode ini menggunakan ekspresi reguler sebagai argumen. Matcher Class:Objek Finder adalah mesin yang menafsirkan pola dan melakukan operasi pencocokan pada string masukan. Seperti Patternsebuah kelas, Matcheria tidak memiliki konstruktor publik. Anda mendapatkan objek Matcherdengan memanggil metode matcherpada objek kelas Pattern. Setelah kita menyelesaikan langkah-langkah ini, dan sekarang kita memiliki instance dari kelas tersebut Matcher m , kita sekarang dapat memeriksa apakah polanya ditemukan atau tidak, dan jika demikian, pada posisi apa, dll. m.matches()mengembalikan nilai benar jika polanya cocok dengan seluruh string, salah jika sebaliknya. m.lookingAt()mengembalikan nilai benar jika polanya cocok dengan awal string, salah jika sebaliknya. m.find ()mengembalikan nilai benar jika polanya cocok dengan bagian mana pun dari teks.
Apa lagi yang harus dibaca:

Grup Pengembang Java:

Menemukan kecocokan

Setelah pencocokan berhasil, m.start() akan mengembalikan indeks karakter pertama yang cocok dan m.end() akan mengembalikan indeks karakter terakhir yang cocok, ditambah satu. Jika upaya yang dilakukan gagal dan tidak ditemukan kecocokan, m.start()mereka m.end()akan melemparIllegalStateException
  • Ini RuntimeExceptionagar Anda tidak perlu menangkapnya.
Mungkin terasa aneh untuk m.end()mengembalikan indeks karakter terakhir yang cocok ditambah satu, tapi itulah yang dilakukan sebagian besar karakter String.
  • Misalnya,“Now is the time“.substring(m.start(), m.end())
akan mengembalikan string yang sama. Mari kita lihat kodenya:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

Metode Tambahan

Jika ada kecocokan, maka:
  • m.replaceFirst(replacement)mengembalikan string baru, di mana substring pertama yang cocok dengan polanya akan digantireplacement
  • m.replaceAll(replacement)mengembalikan string baru, di mana setiap substring yang cocok dengan polanya akan diganti
  • m.find(StartIndex)temukan kecocokan berikutnya dimulai dari indeks yang ditentukan
  • m.reset()mengatur ulang templat
  • m.reset(NewText)mengatur ulang pencari, dan memberinya teks baru (mungkin String, StringBufferatau CharBuffer)

Sintaks ekspresi reguler

  • ^Cocok dengan awal baris.
  • $Cocok dengan akhir string.
  • .Cocok dengan karakter apa pun kecuali baris baru. Menggunakan opsi m memungkinkannya mencocokkan baris baru.
  • [...]Cocok dengan karakter apa pun dalam tanda kurung.
  • [^ ...]Cocok dengan karakter apa pun yang tidak ada dalam tanda kurung.
  • \AMulai seluruh baris.
  • \zAkhir dari seluruh baris.
  • \ZAkhir dari seluruh garis kecuali terminator garis terakhir.
  • re*Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya.
  • re+Satu atau lebih kecocokan dengan ekspresi sebelumnya.
  • re?Cocokkan 0 atau 1 dengan lokasi ekspresi sebelumnya.
  • re{n}Cocok persis dengan N Jumlah kemunculan ekspresi sebelumnya.
  • re{n,}Cocok dengan N atau lebih kemunculan ekspresi sebelumnya.
  • re{n, m}Cocok dengan paling sedikit n dan paling banyak m kemunculan ekspresi sebelumnya.
  • a|bCocok dengan a atau b.
  • (re)Sekelompok ekspresi reguler dan mengingat teks yang ditemukan.
  • (?: re)Kelompok ekspresi reguler yang tidak mengingat teks yang ditemukan.
  • (?> re)Cocok dengan pola independen tanpa pengembalian.
  • \wMencocokkan huruf dan angka [a-zA-Z_0-9].
  • \WIni bukan huruf atau angka.
  • \sRuang yang cocok. Setara dengan [\t\n\r\f].
  • \SBukan karakter spasi putih.
  • \dCocok dengan angkanya. Setara dengan [0-9].
  • \DTidak cocok dengan angkanya.
  • \GCocok dengan poin pertandingan terakhir.
  • \nCocok dengan baris baru.
  • \bCocok pada batas kata.
  • \BCocok tidak pada batas kata.
  • \n, \t, etc.Karakter baris baru, pengangkutan kembali, tab, dll.
  • \QKutip semua karakter sebelum \E.
  • \EKutipan yang dimulai dengan \Q diakhiri.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION