Ekspresi biasa ialah corak yang membantu kita mencari urutan tertentu dalam teks. Di Java, ia digunakan dengan kelas dalam pakej java.util.regex.
Dengan regex, kita boleh mencari corak, menggantikan teks dan mengesahkan input tanpa menambah terlalu banyak kod.
Mari kita lihat beberapa simbol regex biasa dan perkara yang mereka lakukan:
Watak Tersurat: Regex yang paling mudah ialah teks biasa sahaja. helo sepadan dengan sebarang kejadian helo dalam rentetan.
Wildcard:
.: Memadankan mana-mana aksara tunggal (h.llo sepadan dengan helo, halo, hxllo).
Set Watak:
[abc]: Memadankan mana-mana aksara dalam kurungan (h[aeiou]llo sepadan dengan helo, halo).
[a-z]: Memadankan mana-mana huruf kecil dari a hingga z.
Pengkuantiti:
*: Padanan sifar atau lebih kejadian huruf di belakangnya(go*gle sepadan dengan google, ggle, goooooooogle).
: Padan dengan satu atau lebih kejadian (go gle padankan google, goooglebut bukan ggle).
?: Padanan sifar atau satu kejadian huruf di belakangnya(warna?ur sepadan dengan kedua-dua warna dan warna).
Sauh:
^: Menunjukkan permulaan baris (^hello sepadan dengan mana-mana baris yang bermula dengan helo).
$: Menunjukkan penghujung baris (world$ sepadan dengan mana-mana baris yang berakhir dengan dunia).
Kumpulan:
(abc): Himpunkan berbilang aksara sebagai satu unit ((ha) sepadan dengan ha, haha, hahaha).
Watak Melarikan Diri:
Sesetengah aksara (seperti . atau *) mempunyai makna istimewa, jadi awalinya dengan garis serong ke belakang untuk menggunakannya secara literal. Sebagai contoh, . akan sepadan dengan titik literal.
Corak: Menyusun ungkapan biasa dan memadankannya dalam teks.
Penjodoh: Menggunakan corak pada teks tertentu dan membantu mencari padanan.
Berikut ialah contoh ringkas cara kelas ini berfungsi bersama:
import java.util.regex.*;
import java.util.regex.*; public class RegexBasicsDemo { public static void main(String[] args) { String text = "hxllo hallo hbllllllo hello"; Pattern pattern = Pattern.compile("h.llo"); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("Wildcard match found: " + matcher.group()); } } }
Apa yang akan dicetak:
import java.util.regex.*; public class RegexReplaceExample { public static void main(String[] args) { String text = "hello hzllo hallo hillo"; Pattern pattern = Pattern.compile("h[aeiou]llo"); Matcher matcher = pattern.matcher(text); String result = matcher.replaceAll("hi"); System.out.println("Original text: " + text); System.out.println("Text after replacement: " + result); } }
Apa yang akan dicetak:
Kaedah Java Regex Berguna
Sebagai pembangun Java, saya sangat menghargai regex kerana kuasanya dengan pemprosesan teks. Sungguh mengagumkan untuk melihat bagaimana satu baris regex yang direka dengan baik boleh mengendalikan tugasan yang mungkin memerlukan keseluruhan blok kod. Untuk pemadanan yang mudah, regex terasa sempurna: ia ringkas, cekap dan sesuai untuk perkara seperti mengesahkan format atau mengekstrak corak.
Tetapi saya tahu tidak semua orang merasakan perkara yang sama. Regex boleh menjadi jauh dari intuitif, dan apabila corak mula menjadi rumit, kebolehbacaan terjejas. Mudah untuk mencipta corak yang berfungsi seperti keajaiban, namun hampir mustahil untuk difahami oleh orang lain (atau anda sendiri, kemudian, selepas anda pulang dari percutian yang menyeronokkan) sepintas lalu. Corak kompleks boleh menjadi kod "tulis sahaja".
Dalam situasi ini, saya mendapati lebih baik untuk memecahkan pengesahan kepada langkah yang lebih kecil dan lebih mudah. Ini memastikan perkara lebih jelas dan memudahkan orang lain mengikuti logik. Walaupun regex adalah alat yang sangat berharga di Java, saya fikir ia lebih baik digunakan dengan sedikit kekangan, terutamanya dalam persekitaran pasukan. Lagipun, menulis kod yang boleh diselenggara bermakna memikirkan orang seterusnya yang akan membacanya.
Atas ialah kandungan terperinci Regex untuk Jurutera Perisian Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!