„Java Regex“ - kas yra reguliarūs posakiai ir kaip jį naudoti?



„Java Regex“ yra API, naudojama apibrėžti eilučių paieškos ar manipuliavimo šabloną. Šiame straipsnyje taip pat bus kalbama apie įvairias „Java“ teikiamas reguliariųjų išraiškų klases.

Duomenų išskyrimas ar patvirtinimas yra svarbus kiekvienos programavimo kalbos aspektas. Vienas iš populiariausių duomenų tikrinimo būdų yra reguliarių posakių naudojimas. naudoja šiasreguliarūs posakiai, apibūdinantys simbolių modelį. Šis straipsnis apie „Java Regex“ išvardys įvairius posakių naudojimo metodus tokia seka:

Pradėkime!





Kas yra įprasti posakiai?

Į Įprasta išraiška yra simbolių seka, sukurianti paieškos modelį. Kai ieškote duomenų tekste, galite naudoti šį paieškos modelį norėdami apibūdinti tai, ko ieškote.

Reguliarūs posakiai - „Java Regex“ - „Edureka“



Reguliarioji išraiška gali būti a vienas simbolis ar sudėtingesnis raštas. Jis gali būti naudojamas bet kokio tipo teksto paieškai ir teksto pakeitimo operacijoms. „Regex“ raštas susideda iš paprastų simbolių, tokių kaip / abc / , arba paprastų ir specialių simbolių derinys, pvz / ab * c / arba /pavyzdys(d+).d*/ .

Kas yra „Java Regex“?

„Java Regex“ yra API, kuri yra naudojama apibrėžti paieškos ar manipuliavimo modelį . Jis yra plačiai naudojamas apibrėžti eilučių apribojimus, tokius kaip slaptažodis ir el. Pašto patvirtinimas.

Yra įvairių „Java Regex“ naudojimo būdų. Taigi eikime į priekį ir pažvelkime į skirtingas išraiškas.



„Matcher“ klasė

Ši klasė naudojama atliekant simbolių sekos atitikties operacijas. Žemiau lentelėje pateikiami įvairūs „Matcher“ klasės metodai.

Metodas apibūdinimas
loginės rungtynės () Testuoja, ar duota reguliarioji išraiška atitinka modelį
loginis radinys () Naudojamas rasti kitą išraišką atitinkančią išraišką
loginis radinys (pradžia) Ieško kitos išraiškos, atitinkančios nurodyto pradinio numerio modelį
Styginių grupė () Naudojamas grąžinti suderintą seką
int pradžia () Grąžina suderinto pogrindžio pradinį indeksą
int pabaiga () Grąžina suderinto sekos pabaigos indeksą
int groupCount () Pateikia bendrą suderinto sekos skaičių

Rašto klasė

„Pattern Class“ yra parengta reguliariosios išraiškos versija, naudojama apibrėžti „Regex“ variklio modelį.

kaip sukurti dinaminį masyvą Java
Metodas apibūdinimas
statinio modelio kompiliavimas (eilutės regex) Jis surenka pateiktą regex ir grąžina modelio egzempliorių
Atitinka rungtynes ​​(„CharSequence“ įvestis) Jis naudojamas kuriant atitikiklį, kuris atitinka nurodytą įvestį su modeliu
statiniai loginiai atitikmenys (eilutės regex, „CharSequence“ įvestis) Tai veikia kaip kompiliavimo ir atitikimo metodų derinys. Tai sudaro reguliariąją išraišką ir suderina pateiktą įvestį su šablonu
String [] split („CharSequence“ įvestis) Naudojamas padalinti pateiktą įvesties eilutę aplink tam tikro modelio atitikmenis
Styginių raštas () Padeda grąžinti regex modelį

Dabar paimkime mažą pavyzdį, kad suprastume, kaip rašyti reguliarųjį posakį.

importuoti 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 ('Eilutė atitinka nurodytą „Regex“ - + matcher.matches ())}}

Šiuo atveju viduje jis naudoja „Pattern“ ir „Matcher“ regex klasės atlikti apdorojimą, bet akivaizdu,tai sumažina kodo eilutes. Šablono klasėje taip pat yra atitikmenų metodas, kuris regex ir input String laiko argumentu ir, juos suderinęs, pateikia loginį rezultatą. Taigi kodas gerai veikia, jei atitinka įvestį su taisyklingąja išraiška „Java“. Taigi išvestis bus teisinga, kaip parodyta žemiau.

Išvestis:
tiesa

Dabar pažiūrėkime dar keletą „Java“ reguliariųjų išraiškų kategorijų.

„Regex“ simbolių klasė

Žemiau lentelėje pateikiamas skirtingas simbolių klasės derinys.

Veikėjų klasėapibūdinimas
[abc] a, b arba c (paprasta klasė)
[^ abc] Bet koks simbolis, išskyrus a, b ar c (neigimas)
[a-zA-Z] a – z arba A – Z imtinai (diapazonas)
[a-d [m-p]] a – d arba m – p: [a-dm-p] (jungtis)
[a-z && [def]] d, e arba f (sankirta)
[a-z && [^ bc]] a – z, išskyrus b ir c: [ad-z] (atimtis)
[a-z && [^ m-p]] a - z, o ne m - p: [a-lq-z] (atimtis)

Pavyzdys:

importuoti java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (ne x, y ar z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (tarp x, y arba z) System.out.println (Pattern.matches ('[xyz]', 'x')) // // false (x ir y būna daugiau nei vieną kartą) Sistema .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

„Regex“ kiekybininkai

Kiekybininkai nurodo simbolio pasikartojimų skaičių. Žemiau lentelėje pateikiami įvairūs kiekybiniai koeficientai.

Regexapibūdinimas
X? X pasitaiko vieną kartą arba visai nebūna
X + X atsiranda vieną ar kelis kartus
X * X įvyksta nulį ar daugiau kartų
X {n} X įvyksta tik n kartų
X {n,} X įvyksta n ar daugiau kartų
X ir Z} X įvyksta mažiausiai y kartus, bet mažiau nei z kartus

Pavyzdys:

importuoti java.util.regex. * public class Pavyzdys {public static void main (String args []) {System.out.println ('? quantifier ....') // (a arba y arba z ateina vieną kartą) System.out.println (Pattern.matches ('[ayz]?', 'A')) // išvestis: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / ((ay ir z ateina daugiau nei vieną kartą) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a ateina daugiau nei vieną kartą) sistema. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a arba y arba z turi ateiti vieną kartą) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // išvestis: klaidinga System.out.println (' + quantifier .... ') // (a arba y arba z vieną ar kelis kartus) System.out.println (modelis .matches ('[ayz] +', 'a')) // output: true // (a ateina daugiau nei vieną kartą) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a arba y arba z yra daugiau nei vieną kartą) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z ir t neatitinka modelio) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // išvestis: klaidinga System.out.println ('* quantifier ....') // (a, y arba z gali būti lygūs nuliui ar daugiau kartų ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // išvestis: tiesa}}

Iš esmės jis ieškos atitinkančio kvantoriaus ir atitiks paieškos rezultatą.

„Regex Metacharacters“

Reguliariosios išraiškos metaženkliai veikia kaip trumpieji kodai. Pažvelkime į žemiau esančią lentelę, kad suprastume įvairius metaženklų tipus.

Regexapibūdinimas
. Tai gali būti bet koks simbolis (gali ir neatitikti terminatoriaus)
d Atstovauja visus skaitmenis, kurių trūksta [0–9]
D Atstovauja ne skaitmenims, trumpiems [^ 0–9]
s Atstovauja bet kokį tarpą tarp simbolių, sutrumpintai [tnx0Bfr]
S Tai gali būti simbolis be tarpų, trumpas [^ s]
į Tai gali būti žodžio simbolis, trumpas nuo [a-zA-Z_0-9]
IN Atstovauja bet kokiam ne žodžio simboliui, sutrumpintam [^ w]
b Atstovauja žodžio ribą
B Tai ne žodžio riba

Pavyzdys:

importuoti java.util.regex. * public class MetacharExample {public static void main (String args []) {// d reiškia skaitmenį System.out.println ('metacharacters d ....') // (ne skaitmuo) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (skaitmuo ir ateina vieną kartą) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (skaitmuo, bet ateina daugiau nei vieną kartą) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (skaitmuo ir char) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D reiškia ne skaitmeninį System.out.println ('metacharakteriai D ....') // (ne skaitmeninis, bet ateina daugiau nei vieną kartą) 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 // (skaitmuo ir simbolis) System.out.println (Pattern.matches (' D ',' 323abc '))) // Output: false // (ne skaitmuo ir ateina vieną kartą) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metaženklai D su kvantoriumi ....') // (ne skaitmuo ir gali atsirasti 0 ar daugiau kartų) System.out.println (Pattern.matches ('D *', 'abc')) // Išvestis : tiesa } }

Remiantis aukščiau paminėtomis sąlygomis, jis parodys išvestį. Taip ir veikia. Taigi, viskas buvo apie įvairius tipus Regex. Tuo mes artėjame prie šio straipsnio pabaigos. Aštikiuosi, kad radote tai informatyviai. Jei norite sužinoti daugiau, galite apsilankyti mūsų taip pat.

Patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. Mes esame čia, kad padėtume jums kiekviename jūsų kelionės žingsnyje, kad taptume be šių „Java“ interviu klausimų, mes parengėme programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais.

Turite mums klausimą? Prašau tai paminėti šio „Java Regex“ straipsnio komentarų skyriuje ir mes kuo greičiau susisieksime su jumis.