Java Regex - mis on regulaaravaldised ja kuidas seda kasutada?



Java Regex on API, mida kasutatakse mustrite määratlemiseks stringide otsimiseks või manipuleerimiseks. Selles artiklis räägitakse ka Java pakutavatest regulaaravaldiste erinevatest klassidest.

Andmete väljavõtmine või valideerimine on iga programmeerimiskeele oluline aspekt. Üks populaarsemaid viise andmete valideerimiseks on regulaaravaldiste kasutamine. kasutab neidregulaarsed väljendid tähemärgi mustri kirjeldamiseks. See artikkel on Java regex loetleb avaldiste kasutamise erinevad meetodid järgmises järjestuses:

Alustame!





Mis on regulaaravaldised?

TO Regulaarne väljend on tähemärkide jada, mis konstrueerib otsingumustri. Kui otsite andmeid tekstist, saate selle otsingumustri abil kirjeldada otsitavat.

Regulaaravaldised - Java Regex - Edureka



java teisendab stringi kuupäevaks

Regulaaravaldus võib olla a üks märk või keerulisem muster. Seda saab kasutada mis tahes tüüpi teksti otsimiseks ja teksti asendamiseks. Regexi muster koosneb lihtsatest märkidest, näiteks / abc / või lihtsate ja erimärkide kombinatsioon, näiteks / ab * c / või /näide(d+).d*/ .

Mis on Java Regex?

The Java regex on API, millega on harjunud määrake otsimise või manipuleerimise muster . Seda kasutatakse laialdaselt stringide piirangu määratlemiseks, näiteks parooli ja e-posti valideerimine.

Java Regexi kasutamiseks on erinevaid meetodeid. Nii et lähme edasi ja vaatame erinevaid väljendeid.



Võistlusklass

Seda klassi kasutatakse märgijärjestuse sobitamistoimingute tegemiseks. Allpool olev tabel esindab Matcheri klassi erinevaid meetodeid.

Meetod Kirjeldus
tõeväärtuse vasted () Testib, kas antud regulaarne avaldis sobib mustriga
tõeväärtuse leid () Kasutatakse järgmise mustriga sobiva avaldise leidmiseks
boolean leid (int algus) Otsib järgmist avaldist, mis sobib antud algusnumbri mustriga
Stringirühm () Kasutatakse sobitatud järgnevuse tagastamiseks
int algus () Tagastab sobitatud järgnevuse algusindeksi
int lõpp () Tagastab sobitatud järgnevuse lõpuindeksi
int groupCount () Tagastab sobitatud alamjärjestuse koguarvu

Mustriklass

Mustriklass on regulaaravaldise kompileeritud versioon, mida kasutatakse regex-mootori mustri määratlemiseks.

Meetod Kirjeldus
staatilise mustri kompileerimine (stringi regex) See kompileerib antud regexi ja tagastab mustri eksemplari
Vastab vastetele (sisend CharSequence) Seda kasutatakse vaste loomiseks, mis sobib antud sisendi mustriga
staatilised tõeväärtuse vasted (Stringi regex, CharSequence'i sisend) See töötab kompileerimis- ja sobitusmeetodite kombinatsioonina. See kompileerib regulaaravaldise ja sobitab antud sisendi mustriga
String [] split (sisend CharSequence) Kasutatakse antud sisendi stringi jagamiseks antud mustri vastete ümber
Stringimuster () Aitab tagastada regexi mustri

Võtame nüüd väikese näite, et mõista, kuidas regulaaravaldist kirjutada.

import java.util.regex. * public class RegexEexample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String sobib antud regexiga - + matcher.matches ())}}

Sel juhul kasutab sisemiselt Pattern ja Matcher regex klassid töötlemiseks, kuid ilmseltsee vähendab koodiridu. Mustriklass sisaldab ka meetodit match, mis võtab argumendiks regex ja input String ning tagastab pärast nende sobitamist boolean tulemuse. Nii et kood töötab sisendi sobitamiseks hästi regulaaravaldisega Java-s. Seega on väljund tõene, nagu allpool näidatud.

Väljund:
tõsi

meetodi ülekoormamine vs meetodi ülimuslikkus

Vaatame nüüd veel mõnda Java regulaaravaldiste kategooriat.

Regexi märkide klass

Allpool olev tabel tähistab erinevat märgiklassi kombinatsiooni.

TähemärkklassKirjeldus
[abc] a, b või c (lihtklass)
[^ abc] Kõik tähed, välja arvatud a, b või c (eitus)
[a-zA-Z] a kuni z või A kuni Z, kaasa arvatud (vahemik)
[a-d [m-p]] a kuni d või m kuni p: [a-dm-p] (liit)
[a-z && [def]] d, e või f (ristmik)
[a-z && [^ bc]] a kuni z, välja arvatud b ja c: [ad-z] (lahutamine)
[a-z && [^ m-p]] a kuni z ja mitte m kuni p: [a-lq-z] (lahutamine)

Näide:

import java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (mitte x ega y või z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (x või y või z hulgas) System.out.println (Pattern.matches ('[xyz]', 'x')) // // false (x ja y tuleb mitu korda) süsteem .out.println (muster sobib ('[xyz]', 'xxyyyyyz'))}}

Regexi kvantorid

Kvantorid määravad märgi esinemiste arvu. Tabeli all on esitatud erinevad kvantorid.

RegexKirjeldus
X? X esineb üks kord või üldse mitte
X + X esineb üks või mitu korda
X * X esineb null või rohkem korda
X {n} X esineb ainult n korda
X {n,} X esineb n või rohkem korda
X ja Z} X esineb vähemalt y korda, kuid vähem kui z korda

Näide:

import java.util.regex. * public class Näide {public static void main (String args []) {System.out.println ('? quantifier ....') // (a või y või z tuleb üks kord) System.out.println (muster.matches ('[ayz]?', 'A')) // väljund: true System.out.println (muster.matches ('[ayz]?', 'Aaa')) / / (ay ja z tuleb rohkem kui üks kord) System.out.println (Muster.matches ('[ayz]?', 'ayyyyzz')) // väljund: false // (a tuleb rohkem kui üks kord) süsteem. out.println (muster.matches ('[ayz]?', 'amnta')) // väljund: false // (a või y või z peab tulema üks kord) System.out.println (muster.matches ('[ ayz]? ',' ay ')) // väljund: vale System.out.println (' + quantifier .... ') // (a või y või z üks või mitu korda) System.out.println (muster .matches ('[ayz] +', 'a')) // output: true // (a tuleb rohkem kui üks kord) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a või y või z tuleb mitu korda) System.out.println (Pattern.matches [[amn] + ',' aayyyzz ')) // output: true // (z ja t ei sobi mustriga) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // väljund: false System.out.println ('* quantifier ....') // (a või y või z võivad tulla nulli või rohkem kordi ) System.out.println (muster sobib ('[ayz] *', 'ayyyza')) // väljund: tõsi}}

Põhimõtteliselt otsib see sobivat kvantorit ja vastab otsingutulemile.

Regex Metacharacters

Regulaaravaldise metamärgid töötavad lühikoodidena. Heitkem pilk alltoodud tabelisse, et mõista erinevaid metamärke.

RegexKirjeldus
. See võib olla ükskõik milline märk (võib sobida terminatoriga või mitte)
d Esitab kõiki numbreid, mis jäävad alla [0–9]
D Esitab kõiki mittekohaseid, lühidalt [^ 0–9]
s Esitab kõiki tühimärke, lühidalt [tnx0Bfr]
S See võib olla tühimärk, lühidalt [^ s]
aastal See võib olla sõnaline tähemärk, lühidalt [a-zA-Z_0-9]
IN Esitab kõiki mittesõnalisi tähemärke, lühidalt [^ w]
b Esitab sõnapiiri
B See on sõnavaba piir

Näide:

mis on suurandmete hadoop
import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d tähendab numbrit System.out.println ('metamärgid d ....') // (mittekohaline) System.out.println (Pattern.matches ('d', 'abc')) // Väljund: false // (number ja tuleb üks kord) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (number, kuid tuleb mitu korda) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (number ja char) System.out .println (Pattern.matches ('d', '323abc')) // Väljund: false // D tähendab mitte-numbrit System.out.println ('metamärgid D ....') // (mittekohaline, kuid tuleb mitu korda) 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 // (number ja märk) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (mittekohaline ja tuleb üks kord) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metamärgid D koos kvantoriga ....') // (mittekohaline ja võib tulla 0 või enam korda) System.out.println (Muster.koondub ('D *', 'abc')) // Väljund : tõsi } }

Eespool nimetatud tingimuste põhjal kuvab see väljundi. Nii see töötab. Nii et see oli kõike erinevat tüüpi Regex. Sellega jõuame selle artikli lõpuni. Minaloodan, et leidsite selle informatiivseks. Kui soovite rohkem teada saada, saate tutvuda meie lehega samuti.

Vaadake autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Oleme siin, et aidata teil igal sammul teie teekonnal, et saada lisaks sellele Java-intervjuu küsimustele välja, pakume välja õppekava, mis on mõeldud õpilastele ja spetsialistidele, kes soovivad olla Java-arendajad.

Kas teil on meile küsimus? Palun mainige seda selle artikli „Java Regex“ kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.