Java Regex - Mitä ovat säännölliset lausekkeet ja miten sitä käytetään?



Java Regex on API, jota käytetään määrittelemään malli merkkijonojen etsimiselle tai käsittelylle. Tässä artikkelissa puhutaan myös Java: n tarjoamista säännöllisistä lausekkeista.

Tietojen poiminta tai validointi on tärkeä näkökohta jokaiselle ohjelmointikielelle. Yksi suosituimmista tavoista tarkistaa tiedot on käyttää säännöllisiä lausekkeita. käyttää näitäsäännölliset lausekkeet kuvailemaan merkkejä. Tämä artikkeli on Java Regex luetteloi lausekkeiden käyttötavat seuraavassa järjestyksessä:

Aloitetaan!





Mitä ovat säännölliset lausekkeet?

TO Tavallinen ilme on merkkijono, joka muodostaa hakukuvion. Kun haet tietoja tekstistä, voit käyttää tätä hakumallia kuvaamaan etsimääsi.

Säännölliset lausekkeet - Java Regex - Edureka



Säännöllinen lauseke voi olla a yksi merkki tai monimutkaisempi kuvio. Sitä voidaan käyttää kaiken tyyppisiin tekstihakuihin ja tekstin korvaamiseen. Regex-kuvio koostuu yksinkertaisista merkeistä, kuten / abc / tai yksinkertaisten ja erikoismerkkien yhdistelmä, kuten / ab * c / tai /esimerkki(d+).d*/ .

Mikä on Java Regex?

Java Regex on API, johon on tottunut määritä malli etsinnälle tai manipuloinnille . Sitä käytetään laajalti määrittelemään merkkijonojen rajoitukset, kuten salasanan ja sähköpostin vahvistus.

Java Regex -ohjelmaa voidaan käyttää eri tavoin. Joten siirrytään eteenpäin ja katsotaan erilaisia ​​lausekkeita.



Matcher-luokka

Tätä luokkaa käytetään merkkijonon vastaavuustoimintojen suorittamiseen. Alla oleva taulukko kuvaa Matcher-luokan erilaisia ​​menetelmiä.

Menetelmä Kuvaus
loogiset ottelut () Testaa, vastaako annettu säännöllinen lauseke mallia
looginen löytö () Käytetään seuraavan lauseketta vastaavan lausekkeen löytämiseen
looginen löytö (alk. alk.) Hakee seuraavan lausekkeen, joka vastaa annettua aloitusnumeroa
Merkkijono () Käytetään palautetun osuuden palauttamiseen
int alku () Palauttaa sovitetun alijonon aloitusindeksin
aikoo() Palauttaa sovitetun alijonon loppuindeksin
int groupCount () Palauttaa sovitetun alijonon kokonaismäärän

Kuvioluokka

Pattern Class on käännetty versio säännöllisestä lausekkeesta, jota käytetään määrittelemään malli regex-moottorille.

Menetelmä Kuvaus
staattinen kuviokokoelma (merkkijono regex) Se kokoaa annetun regexin ja palauttaa kuvion esiintymän
Vastaa otteluita (CharSequence-syöttö) Sitä käytetään luomaan sovitin, joka vastaa annettua syötettä kuvion kanssa
staattiset totuusarvot (merkkijonon regex, CharSequence-tulo) Se toimii yhdistelmänä kääntäjä- ja matcher-menetelmistä. Se kokoaa säännöllisen lausekkeen ja sovittaa annetun syötteen malliin
Merkkijono [] jako (CharSequence-tulo) Käytetään jakamaan syötetty merkkijono tietyn mallin vastaavuuksien ympärille
Merkkijono () Auttaa palauttamaan regex-kuvion

Otetaan nyt pieni esimerkki ymmärtääksemme kuinka kirjoittaa säännöllinen lauseke.

tuo 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 ('Merkkijono vastaa annettua Regexiä - + matcher.matches ())}}

Tässä tapauksessa sisäisesti se käyttää Pattern and Matcher -ohjelmaa regex-luokkiin suorittamaan käsittely, mutta tietysti,se vähentää koodirivejä. Pattern-luokka sisältää myös match-menetelmän, joka ottaa regexin ja input Stringin argumenttina ja palauttaa loogisen tuloksen vastaamisen jälkeen. Joten koodi toimii hyvin sovitettaessa syötettä Java-säännöllisellä lausekkeella. Siksi tulos on tosi, kuten alla on esitetty.

Tuotos:
totta

Katsotaan nyt vielä muutama Java-säännöllisten lausekkeiden luokka.

Regex-merkkiluokka

Alla oleva taulukko edustaa eri merkkiluokkayhdistelmää.

HahmoluokkaKuvaus
[abc] a, b tai c (yksinkertainen luokka)
[^ abc] Mikä tahansa merkki paitsi a, b tai c (kielto)
[a-zA-Z] a - z tai A - Z, mukaan lukien (alue)
[a-d [m-p]] a - d tai m - p: [a-dm-p] (liitos)
[a-z && [def]] d, e tai f (leikkauspiste)
[a-z && [^ bc]] a - z, paitsi b ja c: [ad-z] (vähennyslasku)
[a-z && [^ m-p]] a - z, ei m - p: [a-lq-z] (vähennyslasku)

Esimerkki:

tuo java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (ei x tai y tai z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (x: n, y: n tai z: n joukossa) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x ja y tulee useammin kuin kerran) Järjestelmä .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex-kvantifikaattorit

Kvantifikaattorit määrittävät merkin esiintymien määrän. Taulukon alla on esitetty useita kvantifikaattoreita.

RegexKuvaus
X? X esiintyy kerran tai ei lainkaan
X + X esiintyy kerran tai useammin
X * X esiintyy nolla tai enemmän kertaa
X {n} X esiintyy vain n kertaa
X {n,} X esiintyy n tai enemmän kertaa
X ja Z} X esiintyy vähintään y kertaa, mutta vähemmän kuin z kertaa

Esimerkki:

miten atomia käytetään pythonissa
tuo java.util.regex. * public class Esimerkki {public static void main (String args []) {System.out.println ('? quantifier ....') // (a tai y tai z tulee kerran) System.out.println (Pattern.matches ('[ayz]?', 'A')) // tuotos: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay ja z tulevat useammin kuin kerran) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a tulee useammin kuin kerran) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a tai y tai z täytyy tulla kerran) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a tai y tai z kerran tai useammin) System.out.println (kuvio .matches ('[ayz] +', 'a')) // output: true // (a tulee useammin kuin kerran) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a tai y tai z tulee useammin kuin kerran) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z ja t eivät ole yhteensopivia kuvioita) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a tai y tai z voi tulla nolla tai enemmän kertaa ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // ulostulo: true}}

Pohjimmiltaan se etsii vastaavaa kvantifikaattoria ja vastaa hakutulosta.

Regex-metahahmot

Säännöllisen lausekkeen metamerkit toimivat lyhytkoodina. Katsotaan alla oleva taulukko ymmärtääksemme erityyppisiä metahahmoja.

RegexKuvaus
. Se voi olla mikä tahansa merkki (ei välttämättä vastaa terminaalia)
d Esittää kaikki numerot, jotka eivät ole numeroita [0-9]
D Edustaa mitä tahansa ei-numeroista, lyhennettä [^ 0-9]
s Edustaa mitä tahansa välilyöntiä, lyhenne sanoista [tnx0Bfr]
S Se voi olla ei-välilyönti, lyhyt sanoista [^ s]
sisään Se voi olla sanamerkki, lyhyt sanoista [a-zA-Z_0-9]
SISÄÄN Edustaa mitä tahansa muuta sanaa kuin lyhennettä [^ w]
b Edustaa sanarajaa
B Se on ei-sanaraja

Esimerkki:

tuo java.util.regex. * public class MetacharExample {public static void main (String args []) {// d tarkoittaa numeroa System.out.println ('metamerkit d ....') // (ei-numeroinen) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (numero ja tulee kerran) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (numero, mutta tulee useammin kuin kerran) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (numero ja merkki) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D tarkoittaa ei-numeroista System.out.println ('metamerkkiä D ....') // (ei-numero, mutta tulee useammin kuin kerran) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Itse Digit System.out.println (Pattern.matches ('D', '1 ')) // Output: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (numero ja merkki) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (ei-numero ja tulee kerran) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .PR intln ('metamerkit D ja kvantifikaattori ....') // (ei-numeroinen ja saattaa tulla vähintään 0 kertaa) System.out.println (Pattern.matches ('D *', 'abc')) // Output : true}}

Edellä mainittujen ehtojen perusteella se näyttää tuotoksen. Näin se toimii. Joten, kyse oli kaikenlaisista Regex. Tämän avulla olemme tämän artikkelin lopussa. Minätoivottavasti löysit sen informatiiviseksi. Jos haluat oppia lisää, voit tutustua meidän yhtä hyvin.

Katso Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Autamme sinua matkanne jokaisessa vaiheessa, jotta tulemme tämän Java-haastattelukysymyksen lisäksi, keksimme opetussuunnitelman, joka on tarkoitettu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä.

Onko sinulla kysymys meille? Mainitse se tämän Java Regex -artikkelin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.