java
Java menyediakan paket java.util.regex untuk pencocokan pola dengan ekspresi reguler. Ekspresi reguler Java sangat mirip dengan bahasa pemrograman Perl dan sangat mudah dipelajari.
Ekspresi reguler adalah urutan karakter khusus yang membantu Anda mencocokkan atau menemukan string atau set string lain, menggunakan sintaks khusus yang disimpan dalam suatu pola. Mereka dapat digunakan untuk mencari, mengedit, atau memanipulasi teks dan data.
Paket java.util.regex terutama terdiri dari tiga kelas berikut
Kelas Pola Objek Pola adalah representasi terkompilasi dari ekspresi reguler. Kelas Pola tidak menyediakan konstruktor publik. Untuk membuat pola, Anda harus terlebih dahulu memanggil salah satu dari compile() . publiknya metode, yang kemudian akan mengembalikan objek Pola. Metode ini menerima ekspresi reguler sebagai argumen pertama.
Kelas Pencocokan Objek Matcher adalah mesin yang menginterpretasikan pola dan melakukan operasi pencocokan terhadap string input. Seperti kelas Pattern, Matcher tidak mendefinisikan konstruktor publik. Anda mendapatkan objek Matcher dengan memanggil matcher() metode pada objek Pola.
PatternSyntaxException Objek PatternSyntaxException adalah pengecualian yang tidak dicentang yang menunjukkan kesalahan sintaksis dalam pola ekspresi reguler.
Menangkap grup adalah cara untuk memperlakukan banyak karakter sebagai satu kesatuan. Mereka dibuat dengan menempatkan karakter yang akan dikelompokkan di dalam satu set tanda kurung. Misalnya, ekspresi reguler (anjing) membuat grup tunggal yang berisi huruf "d", "o", dan "g".
Grup penangkap diberi nomor dengan menghitung tanda kurung buka dari kiri ke kanan. Dalam ekspresi ((A)(B(C))), misalnya, ada empat grup seperti itu
Untuk mengetahui berapa banyak grup yang ada dalam ekspresi, panggil metode groupCount pada objek matcher. Metode groupCount mengembalikan int menunjukkan jumlah grup penangkap yang ada dalam pola matcher.
Ada juga grup khusus, grup 0, yang selalu mewakili seluruh ekspresi. Grup ini tidak termasuk dalam total yang dilaporkan oleh groupCount.
Contoh
Contoh berikut mengilustrasikan cara menemukan string digit dari string alfanumerik yang diberikan
Demo Langsungimport java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String args[] ) { // String to be scanned to find the pattern. String line = "This order was placed for QT3000! OK?"; String pattern = "(.*)(\\d+)(.*)"; // Create a Pattern object Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); }else { System.out.println("NO MATCH"); } } }
Ini akan menghasilkan hasil berikut
Keluaran
Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT300 Found value: 0
Berikut adalah tabel yang mencantumkan semua sintaks metakarakter ekspresi reguler yang tersedia di Java −
Subekspresi | Cocok |
---|---|
Cocok dengan awal baris. | |
$ | Cocok dengan akhir baris. |
. | Cocok dengan satu karakter apa pun kecuali baris baru. Menggunakan m opsi memungkinkannya untuk mencocokkan baris baru juga. |
[...] | Cocok dengan satu karakter dalam tanda kurung. |
[^...] | Cocok dengan satu karakter apa pun yang tidak ada dalam tanda kurung. |
\A | Awal dari seluruh string. |
\z | Akhir dari seluruh string. |
\Z | Akhir dari seluruh string kecuali terminator baris terakhir yang diizinkan. |
ulang* | Mencocokkan 0 atau lebih kemunculan ekspresi sebelumnya. |
re+ | Cocok 1 atau lebih dari hal sebelumnya. |
kembali? | Mencocokkan 0 atau 1 kemunculan ekspresi sebelumnya. |
kembali{ n} | Cocok persis n jumlah kemunculan ekspresi sebelumnya. |
kembali{ n,} | Cocok dengan n atau lebih kemunculan ekspresi sebelumnya. |
kembali{ n, m} | Cocok setidaknya n dan paling banyak m kemunculan ekspresi sebelumnya. |
a| b | Cocok dengan a atau b. |
(kembali) | Mengelompokkan ekspresi reguler dan mengingat teks yang cocok. |
(?:re) | Mengelompokkan ekspresi reguler tanpa mengingat teks yang cocok. |
(?> re) | Mencocokkan pola independen tanpa mundur. |
\w | Mencocokkan karakter kata. |
\W | Mencocokkan karakter bukan kata. |
\s | Mencocokkan spasi putih. Setara dengan [\t\n\r\f]. |
\S | Cocok dengan bukan spasi. |
\d | Mencocokkan angka. Setara dengan [0-9]. |
\D | Cocok dengan nondigit. |
\A | Cocok dengan awal string. |
\Z | Cocok dengan akhir string. Jika ada baris baru, itu cocok sebelum baris baru. |
\z | Cocok dengan akhir string. |
\G | Mencocokkan titik di mana pertandingan terakhir selesai. |
\n | Referensi balik untuk menangkap nomor grup "n". |
\b | Mencocokkan batas kata saat berada di luar tanda kurung. Mencocokkan spasi mundur (0x08) saat berada di dalam tanda kurung. |
\B | Mencocokkan batas bukan kata. |
\n, \t, dll. | Cocok dengan baris baru, carriage return, tab, dll. |
\Q | Escape (kutipan) semua karakter hingga \E. |
\E | Mengakhiri kutipan yang dimulai dengan \Q. |
Berikut adalah daftar metode instance yang berguna
Metode indeks memberikan nilai indeks yang berguna yang menunjukkan dengan tepat di mana kecocokan ditemukan dalam string input −
No.Pr. | Metode &Deskripsi |
---|---|
1 | publik int start() Mengembalikan indeks awal dari pertandingan sebelumnya. |
2 | mulai int publik(grup int) Mengembalikan indeks awal dari urutan yang ditangkap oleh grup tertentu selama operasi pencocokan sebelumnya. |
3 | publik int end() Mengembalikan offset setelah karakter terakhir cocok. |
4 | akhir int publik(grup int) Mengembalikan offset setelah karakter terakhir dari urutan yang ditangkap oleh grup tertentu selama operasi pencocokan sebelumnya. |
Metode studi meninjau string input dan mengembalikan Boolean yang menunjukkan apakah pola ditemukan atau tidak −
No.Pr. | Metode &Deskripsi |
---|---|
1 | pencarian boolean publik() Mencoba mencocokkan urutan input, mulai dari awal region, dengan pola. |
2 | pencarian boolean publik() Mencoba menemukan urutan berikutnya dari urutan input yang cocok dengan pola. |
3 | pencarian boolean publik(int start) Menyetel ulang pencocokan ini dan kemudian mencoba menemukan urutan berikutnya dari urutan input yang cocok dengan pola, mulai dari indeks yang ditentukan. |
4 | kecocokan boolean publik() Mencoba mencocokkan seluruh wilayah dengan pola. |
Metode penggantian adalah metode yang berguna untuk mengganti teks dalam string input −
No.Pr. | Metode &Deskripsi |
---|---|
1 | pencocokan publik appendReplacement(StringBuffer sb, penggantian String) Menerapkan langkah append-and-replace non-terminal. |
2 | public StringBuffer appendTail(StringBuffer sb) Menerapkan langkah tambahkan-dan-ganti terminal. |
3 | public String replaceAll(String replacement) Mengganti setiap suburutan dari urutan input yang cocok dengan pola dengan string pengganti yang diberikan. |
4 | public String replaceFirst(Penggantian String) Menggantikan urutan pertama dari urutan input yang cocok dengan pola dengan string pengganti yang diberikan. |
5 | public static String quoteReplacement(String s) Mengembalikan String pengganti literal untuk String yang ditentukan. Metode ini menghasilkan String yang akan berfungsi sebagai pengganti literal s dalam metode appendReplacement dari kelas Matcher. |
Berikut adalah contoh yang menghitung berapa kali kata "kucing" muncul di string input −
Contoh
Demo Langsungimport java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { private static final String REGEX = "\\bcat\\b"; private static final String INPUT = "cat cat cat cattie cat"; public static void main( String args[] ) { Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(INPUT); // get a matcher object int count = 0; while(m.find()) { count++; System.out.println("Match number "+count); System.out.println("start(): "+m.start()); System.out.println("end(): "+m.end()); } } }
Ini akan menghasilkan hasil berikut
Keluaran
Match number 1 start(): 0 end(): 3 Match number 2 start(): 4 end(): 7 Match number 3 start(): 8 end(): 11 Match number 4 start(): 19 end(): 22
Anda dapat melihat bahwa contoh ini menggunakan batas kata untuk memastikan bahwa huruf "c" "a" "t" bukan hanya substring dalam kata yang lebih panjang. Ini juga memberikan beberapa informasi berguna tentang di mana dalam string input kecocokan telah terjadi.
Metode awal mengembalikan indeks awal dari urutan yang ditangkap oleh grup yang diberikan selama operasi pencocokan sebelumnya, dan akhir mengembalikan indeks karakter terakhir yang cocok, ditambah satu.
Metode match dan lookingAt keduanya mencoba mencocokkan urutan input dengan pola. Perbedaannya, bagaimanapun, adalah bahwa kecocokan membutuhkan seluruh urutan input untuk dicocokkan, sedangkan lookingAt tidak.
Kedua metode selalu dimulai di awal string input. Berikut adalah contoh yang menjelaskan fungsionalitas −
Contoh
Demo Langsungimport java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { private static final String REGEX = "foo"; private static final String INPUT = "fooooooooooooooooo"; private static Pattern pattern; private static Matcher matcher; public static void main( String args[] ) { pattern = Pattern.compile(REGEX); matcher = pattern.matcher(INPUT); System.out.println("Current REGEX is: "+REGEX); System.out.println("Current INPUT is: "+INPUT); System.out.println("lookingAt(): "+matcher.lookingAt()); System.out.println("matches(): "+matcher.matches()); } }
Ini akan menghasilkan hasil berikut
Keluaran
Current REGEX is: foo Current INPUT is: fooooooooooooooooo lookingAt(): true matches(): false
Metode replaceFirst dan replaceAll menggantikan teks yang cocok dengan ekspresi reguler yang diberikan. Seperti namanya, replaceFirst menggantikan kemunculan pertama, dan replaceAll menggantikan semua kemunculan.
Berikut adalah contoh yang menjelaskan fungsionalitas −
Contoh
Demo Langsungimport java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { private static String REGEX = "dog"; private static String INPUT = "The dog says meow. " + "All dogs say meow."; private static String REPLACE = "cat"; public static void main(String[] args) { Pattern p = Pattern.compile(REGEX); // get a matcher object Matcher m = p.matcher(INPUT); INPUT = m.replaceAll(REPLACE); System.out.println(INPUT); } }
Ini akan menghasilkan hasil berikut
Keluaran
The cat says meow. All cats say meow.
Kelas Matcher juga menyediakan metode appendReplacement dan appendTail untuk penggantian teks.
Berikut adalah contoh yang menjelaskan fungsinya
Contoh
Demo Langsungimport java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { private static String REGEX = "a*b"; private static String INPUT = "aabfooaabfooabfoob"; private static String REPLACE = "-"; public static void main(String[] args) { Pattern p = Pattern.compile(REGEX); // get a matcher object Matcher m = p.matcher(INPUT); StringBuffer sb = new StringBuffer(); while(m.find()) { m.appendReplacement(sb, REPLACE); } m.appendTail(sb); System.out.println(sb.toString()); } }
Ini akan menghasilkan hasil berikut
Keluaran
-foo-foo-foo-
PatternSyntaxException adalah pengecualian yang tidak dicentang yang menunjukkan kesalahan sintaksis dalam pola ekspresi reguler. Kelas PatternSyntaxException menyediakan metode berikut untuk membantu Anda menentukan apa yang salah −
No.Pr. | Metode &Deskripsi |
---|---|
1 | getDescription String publik() Mengambil deskripsi kesalahan. |
2 | publik int getIndex() Mengambil indeks kesalahan. |
3 | getPattern String publik() Mengambil pola ekspresi reguler yang salah. |
4 | getMessage() String publik() Mengembalikan string multi-baris yang berisi deskripsi kesalahan sintaksis dan indeksnya, pola ekspresi reguler yang salah, dan indikasi visual indeks kesalahan dalam pola. |
java
Polimorfisme Java Dalam tutorial ini, kita akan belajar tentang polimorfisme Java dan implementasinya dengan bantuan contoh. Polimorfisme adalah konsep penting dari pemrograman berorientasi objek. Ini berarti lebih dari satu bentuk. Artinya, entitas yang sama (metode atau operator atau objek) dapa
Pengecualian Java Dalam tutorial ini, kita akan belajar tentang exception di Java. Kami akan membahas kesalahan, pengecualian, dan berbagai jenis pengecualian di Java. Pengecualian adalah kejadian tak terduga yang terjadi selama eksekusi program. Ini mempengaruhi aliran instruksi program yang dapat
Antarmuka Koleksi Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Collection dan subinterface-nya. Collection antarmuka adalah antarmuka akar kerangka koleksi Java. Tidak ada implementasi langsung dari antarmuka ini. Namun, ini diimplementasikan melalui subinterfacenya seperti L
Daftar Java Dalam tutorial ini, kita akan belajar tentang antarmuka Daftar di Java dan metodenya. Dalam Java, List interface adalah kumpulan terurut yang memungkinkan kita untuk menyimpan dan mengakses elemen secara berurutan. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Daftar Seja