Java Regex - Apakah Ekspresi Biasa dan Bagaimana Menggunakannya?



Java Regex adalah API yang digunakan untuk menentukan pola mencari atau memanipulasi rentetan. Artikel ini juga akan membincangkan mengenai pelbagai kelas Ungkapan Biasa yang disediakan oleh Java.

Pengekstrakan atau pengesahan data adalah aspek penting dalam setiap bahasa pengaturcaraan. Salah satu cara yang paling popular untuk pengesahan data adalah dengan menggunakan ungkapan biasa. menggunakan iniungkapan biasa untuk menerangkan corak watak. Artikel ini di Java Regex akan menyenaraikan pelbagai kaedah menggunakan ungkapan dalam urutan berikut:

Mari kita mulakan!





Apa itu Ungkapan Biasa?

KE Ekspresi biasa adalah urutan watak yang membina corak carian. Semasa anda mencari data dalam teks, anda boleh menggunakan corak carian ini untuk menerangkan apa yang anda cari.

Ungkapan Biasa - Java Regex - Edureka



Ungkapan biasa boleh menjadi watak tunggal atau corak yang lebih rumit. Ia dapat digunakan untuk semua jenis operasi pencarian teks dan penggantian teks. Corak Regex terdiri daripada watak-watak sederhana, seperti / abc / , atau gabungan watak sederhana dan khas, seperti / ab * c / atau / contoh(d+).d*/ .

Apa itu Java Regex?

The Java Regex adalah API yang digunakan untuk tentukan corak untuk mencari atau memanipulasi . Ia digunakan secara meluas untuk menentukan kekangan pada String seperti pengesahan kata laluan dan e-mel.

Terdapat kaedah yang berbeza menggunakan Java Regex. Oleh itu, mari maju dan lihat ungkapan yang berbeza.



Kelas Pemadan

Kelas ini digunakan untuk melakukan operasi pertandingan pada urutan watak. Jadual di bawah menunjukkan pelbagai kaedah kelas Matcher.

goto dalam c ++
Kaedah Penerangan
perlawanan boolean () Menguji sama ada ungkapan biasa yang diberikan sesuai dengan corak
cari boolean () Digunakan untuk mencari ungkapan seterusnya yang sesuai dengan corak
penemuan boolean (int permulaan) Mencari ungkapan seterusnya yang sesuai dengan corak dari nombor permulaan yang diberikan
Kumpulan tali () Digunakan untuk mengembalikan susunan yang dipadankan
permulaan int () Mengembalikan indeks permulaan susunan yang dipadankan
akhir int () Mengembalikan indeks akhir bagi pemadanan yang dipadankan
kumpulan int () Mengembalikan jumlah keseluruhan susunan yang dipadankan

Kelas Corak

Pola Kelas adalah versi gabungan ungkapan biasa yang digunakan untuk menentukan corak untuk mesin regex.

Kaedah Penerangan
penyusunan Corak statik (String regex) Ia menyusun regex yang diberikan dan mengembalikan contoh Corak
Perlawanan perlawanan (input CharSequence) Ia digunakan untuk membuat pemadan yang memadankan input yang diberikan dengan corak
padanan boolean statik (String regex, input CharSequence) Ia berfungsi sebagai gabungan kaedah penyusun dan pemadan. Ia menyusun ungkapan biasa dan memadankan input yang diberikan dengan corak
String [] split (input CharSequence) Digunakan untuk membagi input yang diberi String sekitar padanan corak yang diberikan
Corak tali () Membantu mengembalikan corak regex

Sekarang mari kita ambil contoh kecil untuk memahami cara menulis ungkapan biasa.

import java.util.regex. * kelas awam RegexContoh {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String sepadan dengan Regex - + matcher.matches ())}} yang diberikan

Dalam kes ini, secara dalaman ia menggunakan Pattern and Matcher kelas regex untuk melakukan pemprosesan tetapi jelas,ia mengurangkan garis kod. Kelas corak juga mengandungi kaedah padanan yang mengambil regex dan memasukkan String sebagai argumen dan mengembalikan hasil boolean setelah memadankannya. Jadi kod berfungsi dengan baik untuk input yang sepadan dengan ungkapan Biasa di Jawa. Oleh itu output akan menjadi benar seperti gambar di bawah.

Pengeluaran:
benar

Sekarang mari kita lihat beberapa lagi kategori Ekspresi Biasa Java.

Kelas Watak Regex

Jadual di bawah menunjukkan kombinasi kelas watak yang berbeza.

Kelas PerwatakanPenerangan
[abc] a, b, atau c (kelas sederhana)
[^ abc] Mana-mana watak kecuali a, b, atau c (penolakan)
[a-zA-Z] a hingga z atau A hingga Z, inklusif (julat)
[a-d [m-p]] a hingga d, atau m hingga p: [a-dm-p] (penyatuan)
[a-z && [def]] d, e, atau f (persimpangan)
[a-z && [^ bc]] a hingga z, kecuali b dan c: [ad-z] (pengurangan)
[a-z && [^ m-p]] a hingga z, dan bukan m hingga p: [a-lq-z] (pengurangan)

Contoh:

import java.util.regex. * public class CharacterContoh {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (di antara x atau y atau z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x dan y datang lebih dari sekali) Sistem .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}}

Kuantiti Regex

Pengukur menentukan bilangan kejadian watak. Jadual di bawah menunjukkan pelbagai pembilang.

RegexPenerangan
X? X berlaku sekali atau tidak sama sekali
X + X berlaku sekali atau lebih
X * X berlaku sifar atau lebih banyak kali
X {n} X berlaku n kali sahaja
X {n,} X berlaku n atau lebih banyak kali
X dan Z} X berlaku sekurang-kurangnya y kali tetapi kurang daripada z kali

Contoh:

import java.util.regex. * kelas awam Contoh {public static void main (String args []) {System.out.println ('? quantifier ....') // (a atau y atau z datang sekali) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay dan z datang lebih dari satu kali) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a datang lebih dari satu kali) Sistem. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a atau y atau z mesti datang sekali) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a atau y atau z sekali atau lebih kali) System.out.println (Corak .matches ('[ayz] +', 'a')) // output: true // (a datang lebih dari satu kali) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a atau y atau z datang lebih dari sekali) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z dan t tidak sesuai corak) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a atau y atau z mungkin datang sifar atau lebih banyak kali ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: benar}}

Pada dasarnya, ia akan mencari pengukur yang sepadan dan sesuai dengan hasil carian.

Metakarakter Regex

Metakarakter ungkapan biasa berfungsi sebagai kod pendek. Mari lihat jadual di bawah untuk memahami pelbagai jenis metakarakter.

RegexPenerangan
. Ia boleh menjadi watak apa pun (mungkin atau tidak sepadan dengan terminator)
d Melambangkan sebarang digit, pendek [0-9]
D Merupakan sebarang angka bukan digit, kependekan dari [^ 0-9]
s Mewakili mana-mana watak ruang kosong, kependekan dari [tnx0Bfr]
S Ia boleh menjadi watak tanpa ruang kosong, kependekan dari [^ s]
dalam Ia boleh menjadi watak kata, kependekan dari [a-zA-Z_0-9]
DALAM Merupakan watak bukan perkataan, kependekan dari [^ w]
b Merupakan sempadan perkataan
B Ia adalah sempadan bukan perkataan

Contoh:

import java.util.regex. * metachar kelas awamContoh {public static void main (String args []) {// d bermaksud digit System.out.println ('metacharacters d ....') // (bukan digit) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (digit dan datang sekali) System.out.println (Pattern.matches ('d', '1') ) Output: true // (digit tetapi datang lebih dari sekali) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (digit dan char) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D bermaksud Sistem bukan digit.out.println ('metacharacters D ....') // (bukan digit tetapi datang lebih dari sekali) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Its a Digit System.out.println (Pattern.matches ('D', '1 ')) // Output: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (digit dan char) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (bukan digit dan datang sekali) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metacharacters D with quantifier ....') // (bukan digit dan mungkin datang 0 atau lebih kali) System.out.println (Pattern.matches ('D *', 'abc')) // Output : benar}}

Berdasarkan keadaan yang disebutkan di atas, ia akan memaparkan outputnya. Begitulah cara kerjanya. Jadi, itu semua mengenai pelbagai jenis Regex. Dengan ini, kita sampai pada akhir artikel ini. Sayaharap anda dapati maklumat ini. Sekiranya anda ingin mengetahui lebih lanjut, anda boleh melihat kami juga.

Lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kami di sini untuk membantu anda dalam setiap langkah dalam perjalanan anda, kerana selain daripada soalan wawancara java ini, kami menyediakan kurikulum yang dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java.

Ada soalan untuk kami? Sila sebutkan di bahagian komen artikel 'Java Regex' ini dan kami akan menghubungi anda secepat mungkin.