Ekspresi reguler adalah rumus yang menggunakan pola tertentu untuk mencocokkan jenis string. Ekspresi reguler terdiri dari beberapa karakter biasa dan beberapa karakter meta. Karakter biasa mencakup huruf besar dan kecil serta angka, sedangkan karakter meta memiliki arti khusus. Baik itu platform .Net atau platform Java, arti yang diungkapkan oleh ekspresi reguler adalah sama. Di bawah ini kami terutama menganalisis fungsi ekspresi reguler Java dan aplikasi tertentu. Saya harap artikel ini bermanfaat bagi Anda dan hanya untuk referensi.
Sejak jdk1.4 meluncurkan paket java.util.regex, paket ini telah memberi kita platform aplikasi ekspresi reguler Java yang baik, karena ekspresi reguler Java adalah sistem yang sangat kompleks.
// garis miring terbalik
/t interval('/u0009')
/n umpan baris ('/u000A')
/r Masuk('/u000D')
/d secara numerik setara dengan [0-9]
/D bukan angka setara dengan [^0-9]
/s spasi [/t/n/x0B/f/r]
/S karakter bukan spasi [^/t/n/x0B/f/r]
/w karakter individual [a-zA-Z_0-9]
/W karakter yang tidak terpisah [^a-zA-Z_0-9]
/f membentuk karakter umpan
/e Melarikan diri
/b batas kata
/B Batas bukan kata
/G akhir pertandingan sebelumnya
^ dimulai dengan pembatasan
^kondisi java terbatas pada karakter yang dimulai dengan Java
$ adalah akhir dari pembatasan
Kondisi java$ terbatas pada java sebagai karakter akhir
. Kondisi ini membatasi karakter tunggal apa pun kecuali /n
java.. kondisi terbatas pada dua karakter setelah java kecuali baris baru
Tambahkan batasan khusus "[]"
Kondisi [az] dibatasi pada satu karakter dalam rentang huruf kecil a hingga z
Kondisi [AZ] dibatasi pada satu karakter dalam rentang huruf besar A hingga Z
Kondisi [a-zA-Z] dibatasi pada satu karakter dalam rentang huruf kecil a hingga z atau huruf besar A hingga Z
[0-9] Kondisi dibatasi pada satu karakter dalam rentang huruf kecil 0 hingga 9
[0-9a-z] Kondisi dibatasi pada satu karakter dalam rentang huruf kecil 0 hingga 9 atau a hingga z
[0-9[az]] Kondisi dibatasi pada satu karakter (persimpangan) dalam rentang huruf kecil 0 hingga 9 atau a hingga z
Tambahkan ^ ke [] lalu tambahkan batasan lain "[^]"
Kondisi [^az] dibatasi pada satu karakter dalam rentang a hingga z bukan huruf kecil
Kondisi [^AZ] dibatasi pada satu karakter dalam rentang A hingga Z non-kapital
[^a-zA-Z] Kondisi dibatasi pada satu karakter dalam rentang bukan huruf kecil a hingga z atau huruf besar A hingga Z
[^0-9] Kondisi dibatasi pada satu karakter dalam rentang bukan huruf kecil 0 hingga 9
[^0-9a-z] Kondisi dibatasi pada satu karakter dalam rentang bukan huruf kecil 0 hingga 9 atau a hingga z
[^0-9[az]] Kondisi dibatasi pada satu karakter (persimpangan) dalam rentang bukan huruf kecil 0 hingga 9 atau a hingga z
Jika kondisi batasannya adalah karakter tertentu muncul lebih dari 0 kali, Anda dapat menggunakan "*"
J* lebih dari 0J
.* 0 karakter atau lebih
J.* Lebih dari 0 karakter antara DJ dan D
Jika syarat pembatasannya adalah karakter tertentu muncul lebih dari satu kali, Anda dapat menggunakan "+"
J+ 1 atau lebih J
.+ 1 karakter atau lebih
J.+1 karakter atau lebih antara DJ dan D
Jika batasannya adalah karakter tertentu muncul 0 kali atau lebih, Anda dapat menggunakan "?"
JA? J atau JA muncul
Batasi jumlah kemunculan karakter "{a}" berturut-turut yang ditentukan
J{2} JJ
J{3} JJJ
Ada lebih dari satu karakter, dan "{a,}"
J{3,} JJJ,JJJJ,JJJJJ,???(J hidup berdampingan lebih dari 3 kali)
Lebih dari karakter dan kurang dari b karakter "{a,b}"
J{3,5} JJJ atau JJJJ atau JJJJJ
Pilih salah satu dari dua "|"
J|AJ atau A
Java|Halo Java atau Halo
"()" menentukan tipe kombinasi <BR>Misalnya, jika saya menanyakan data antara <a href></a> di <a href="index.html/">index</a>, maka dapat ditulis sebagai <a .*href=/".*/">(.+?)</a>
Saat menggunakan fungsi Pattern.compile, Anda dapat menambahkan parameter yang mengontrol perilaku pencocokan ekspresi reguler Java:
Pola Pola.kompilasi(String regex, int flag)
Kisaran nilai bendera adalah sebagai berikut:
Pattern.CANON_EQ Kecocokan dianggap jika dan hanya jika "dekomposisi kanonik" dari dua karakter sama persis. Misalnya, setelah menggunakan tanda ini, ekspresi "a/u030A" akan cocok dengan "?". Secara default, "kesetaraan kanonik" tidak dipertimbangkan.
Pola.CASE_INSENSITIVE(?i)
Secara default, pencocokan peka huruf besar-kecil hanya berfungsi dengan rangkaian karakter US-ASCII. Tanda ini menyebabkan ekspresi dicocokkan apa pun hurufnya. Untuk melakukan pencocokan karakter Unicode yang jelas, cukup gabungkan UNICODE_CASE dengan tanda ini.
Pola.KOMENTAR(?x)
Dalam mode ini, karakter spasi dalam ekspresi reguler Java akan diabaikan saat mencocokkan (Catatan Penerjemah: Ini tidak mengacu pada "//s" dalam ekspresi, tetapi merujuk pada spasi, tab, gerbong kembali, dll. dalam ekspresi. ) . Komentar dimulai dengan # dan berlanjut hingga akhir baris. Mode garis Unix dapat diaktifkan melalui bendera yang tertanam.
Pola.DOTALL(?s)
Dalam mode ini, ekspresi '.' dapat cocok dengan karakter apa pun, termasuk akhir baris. Secara default, ekspresi '.' tidak cocok dengan terminator garis.
Pola.MULTILINE(?m)
Dalam mode ini, '^' dan '$' masing-masing cocok dengan awal dan akhir baris. Selain itu, '^' masih cocok dengan awal string, dan '$' juga cocok dengan akhir string. Secara default, kedua ekspresi ini hanya cocok dengan awal dan akhir string.
Pola.UNICODE_CASE(?u)
Dalam mode ini, jika Anda juga mengaktifkan flag CASE_INSENSITIVE, karakter tersebut akan cocok dengan karakter Unicode tanpa membedakan huruf besar dan kecil. Secara default, pencocokan peka huruf besar-kecil hanya berfungsi dengan rangkaian karakter US-ASCII.
Pola.UNIX_LINES(?d)
Dalam mode ini, hanya '/n' yang dianggap sebagai ganti baris, dan dicocokkan dengan '.', '^', dan '$'. Mengesampingkan konsep yang tidak jelas, berikut adalah beberapa kasus penggunaan reguler Java yang sederhana:
◆Misalnya, ketika string berisi validasi