Java Regex - Mik azok a reguláris kifejezések és hogyan kell használni?



A Java Regex egy API, amelyet a karakterláncok keresésére vagy kezelésére szolgáló minta meghatározására használnak. Ez a cikk a Java által biztosított reguláris kifejezések különféle osztályairól is szól.

Az adatok kinyerése vagy validálása minden programozási nyelv fontos szempontja. Az adatok érvényesítésének egyik legnépszerűbb módja a reguláris kifejezések használata. ezeket használjareguláris kifejezések a karakterek mintázatának leírására. Ez a cikk a Java Regex felsorolja a kifejezések felhasználásának különféle módszereit a következő sorrendben:

Lássunk neki!





Mik azok a reguláris kifejezések?

NAK NEK Reguláris kifejezés egy karaktersor, amely felépíti a keresési mintát. Amikor adatokat keres egy szövegben, ezzel a keresési mintával leírhatja, hogy mit keres.

Reguláris kifejezések - Java Regex - Edureka



A szabályos kifejezés lehet a egy karakter vagy egy bonyolultabb minta. Bármilyen típusú szövegkereséshez és szövegcsere műveletekhez használható. A Regex minta egyszerű karakterekből áll, mint pl / abc / , vagy egyszerű és speciális karakterek kombinációja, például /ABC/ vagy /example(d+).d*/ .

Mi a Java Regex?

Az Java Regex egy API, amelyhez szokott adjon meg egy mintát a kereséshez vagy a manipuláláshoz . Széles körben használják a karakterláncok korlátozásának meghatározására, például a jelszó és az e-mail ellenőrzés.

Különböző módszerek vannak a Java Regex használatára. Tehát haladjunk előre, és vessünk egy pillantást a különböző kifejezésekre.



Matcher osztály

Ezt az osztályt egy karaktersorozat egyezési műveleteinek végrehajtására használják. Az alábbi táblázat a Matcher osztály különböző módszereit mutatja be.

Módszer Leírás
logikai egyezések () Megvizsgálja, hogy az adott reguláris kifejezés megfelel-e a mintának
logikai lelet () Megtalálja a következő kifejezést, amely megfelel a mintának
logikai lelet (int start) Megkeresi a következő kifejezést, amely megegyezik az adott kezdő szám mintájával
Karakterlánc-csoport () Az illesztett alszekvencia visszaadására szolgál
int start () Visszaadja az egyeztetett folytatás kezdőindexét
int vége () Visszaadja az egyeztetett alszekvencia befejező indexét
int groupCount () Visszaadja az egyeztetett rész teljes számát

Minta osztály

A Pattern Class a reguláris kifejezés összeállított változata, amely a regex motor mintázatának meghatározására szolgál.

Módszer Leírás
statikus minta fordítása (String regex) Összeállítja a megadott regexet és visszaadja a Pattern példányát
Megfelel a mérkőzéseknek (CharSequence bevitel) Olyan illesztõ létrehozására szolgál, amely megfelel az adott bemenetnek a mintával
statikus logikai egyezések (String regex, CharSequence bemenet) Ez fordítási és illesztési módszerek kombinációjaként működik. Összeállítja a reguláris kifejezést, és az adott bemenetet illeszti a mintához
Karakterlánc [] felosztás (CharSequence bemenet) Az adott bemeneti karakterlánc felosztására szolgál egy adott minta egyezései köré
Karakterlánc minta () Segít a regex minta visszaadásában

Vegyünk egy kis példát, hogy megértsük, hogyan kell szabályos kifejezést írni.

import java.util.regex. * public class RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('A karakterlánc megegyezik a megadott Regexszel - + matcher.matches ())}}

Ebben az esetben belsőleg a Pattern and Matcher-t használja regex osztályok a feldolgozás elvégzéséhez, de nyilvánvalóan,csökkenti a kódsorokat. A Pattern osztály tartalmaz egyezési metódust is, amely a regexet és az input String argumentumot veszi fel, és azok összeadása után logikai eredményt ad vissza. Tehát a kód jól működik a megfelelő bemenethez Java rendszeres kifejezéssel. Ezért a kimenet az alábbiak szerint igaz lesz.

Kimenet:
igaz

Most nézzünk meg még néhány Java reguláris kifejezés kategóriát.

Regex Karakterosztály

Az alábbi táblázat a különböző karakterosztály-kombinációkat mutatja.

KarakterosztályLeírás
[ABC] a, b vagy c (egyszerű osztály)
[^ abc] Bármely karakter, kivéve a, b vagy c (tagadás)
[a-zA-Z] a – z vagy A – Z, beleértve (tartomány)
[a-d [m-p]] a - d, vagy m - p: [a-dm-p] (egyesülés)
[a-z && [def]] d, e vagy f (metszéspont)
[a-z && [^ bc]] a – z, kivéve b és c: [ad-z] (kivonás)
[a-z && [^ m-p]] a-tól z-ig, és nem m-től p-ig: [a-lq-z] (kivonás)

Példa:

java.util.regex. * public class CharacterExample {public static void main (String args []) {// hamis (nem x vagy y vagy z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (x vagy y vagy z között) System.out.println (Pattern.matches ('[xyz]', 'x')) // // false (x és y többször jön) System .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz')}}}

Regex kvantorok

A kvantorok meghatározzák a karakter előfordulásainak számát. Az alábbi táblázat különféle kvantorokat mutat be.

RegexLeírás
X? X egyszer fordul elő, vagy egyáltalán nem
X + X egyszer vagy többször előfordul
X * X nulla vagy többször fordul elő
X {n} X csak n-szer fordul elő
X {n,} X n vagy többször fordul elő
X és Z} X legalább y-szer, de kevesebb mint z-szer fordul elő

Példa:

import java.util.regex. * public class Példa {public static void main (String args []) {System.out.println ('? quantifier ....') // (a vagy y vagy z egyszer jön) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay és z többször jön) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a többször jön) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a vagy y vagy z egyszer kell, hogy jöjjön) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: hamis System.out.println (' + kvantor .... ') // (a vagy y vagy z egyszer vagy többször) System.out.println (minta .matches ('[ayz] +', 'a')) // output: true // (a többször jön) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (az a vagy y vagy z többször jön) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z és t nem egyeznek a mintával) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: hamis System.out.println ('* quantifier ....') // (a vagy y vagy z nulla vagy többszöröse lehet ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

objektumok tömbje java-ban

Alapvetően meg fogja keresni az egyező kvantort, és egyezik a keresési eredménnyel.

Regex Metakarakterek

A reguláris kifejezés metakarakterei rövid kódként működnek. Vessünk egy pillantást az alábbi táblázatra, hogy megértsük a metakarakterek különféle típusait.

RegexLeírás
. Bármely karakter lehet (lehet, hogy nem egyezik a terminátorral)
d Bármely számjegyet képvisel, a [0–9] rövidítés nélkül
D Minden nem számjegyet képvisel, rövidítve a [^ 0-9] kifejezésen
s Minden szóköz karaktert képvisel, rövid a [tnx0Bfr] kifejezéssel
S Lehet nem szóköz karakter, rövid [^ s]
ban ben Lehet szó karakter, rövidítve az [a-zA-Z_0-9] kifejezéssel
BAN BEN Bármely nem szóból álló karaktert képvisel, rövidítve: [^ w]
b Szóhatárot képvisel
B Ez nem szóhatár

Példa:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d a System.out.println ('metakarakterek d ....') // (nem számjegy) számjegyet jelenti. System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (számjegy és egyszer jön) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (számjegy, de többször jön) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (digit and char) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D jelentése nem számjegyű System.out.println ('metakarakter D ....') // (nem számjegy, de többször jön) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Ez egy Digit System.out.println (Pattern.matches ('D', '1 ')) // Output: hamis System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (szám és karakter) System.out.println (Pattern.matches (' D ',' 323abc ')) // // Output: false // (nem számjegyű és egyszer jön) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metakarakterek D kvantorral ....') // (nem számjegyűek, és jöhetnek 0 vagy többször is) System.out.println (Pattern.matches ('D *', 'abc')) // Output : true}}

A fent említett feltételek alapján megjeleníti a kimenetet. Így működik. Szóval, ez csak a különféle típusokról szólt Regex. Ezzel a cikk végére értünk. énremélem, informatívnak találta. Ha többet szeretne megtudni, nézze meg a mi oldalunkat is.

Nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Azért vagyunk itt, hogy segítséget nyújtsunk az utazás minden lépésében, hogy e java interjúk kérdése mellett a tananyagot kitaláljuk olyan hallgatók és szakemberek számára, akik Java fejlesztők szeretnének lenni.

Van egy kérdésünk? Kérjük, említse meg a „Java Regex” cikk megjegyzés rovatában, és amint lehetséges, kapcsolatba lépünk Önnel.