Java Regex - kas ir regulārās izteiksmes un kā to izmantot?



Java Regex ir API, ko izmanto, lai definētu modeli virkņu meklēšanai vai manipulēšanai. Šajā rakstā tiks runāts arī par dažādām Java regulāro izteiksmju klasēm.

Datu iegūšana vai validēšana ir svarīgs katras programmēšanas valodas aspekts. Viens no populārākajiem datu validācijas veidiem ir regulāru izteiksmju izmantošana. izmanto šosregulāras izteiksmes, lai aprakstītu rakstzīmju modeli. Šis raksts par Java regex uzskaitīs dažādas izteicienu izmantošanas metodes šādā secībā:

Sāksim!





Kas ir regulārās izteiksmes?

TO Regulāra izteiksme ir rakstzīmju secība, kas izveido meklēšanas modeli. Meklējot datus tekstā, varat izmantot šo meklēšanas modeli, lai aprakstītu meklēto.

Regulārās izteiksmes - Java Regex - Edureka



kura skenera klases metode nolasa virkni?

Regulāra izteiksme var būt a viens raksturs vai sarežģītāks modelis. To var izmantot jebkura veida teksta meklēšanai un teksta aizstāšanas darbībām. Regex modelis sastāv no vienkāršām rakstzīmēm, piemēram, / abc / , vai vienkāršu un īpašu rakstzīmju kombinācija, piemēram, / ab * c / vai /example(d+).d*/ .

Kas ir Java Regex?

The Java regex ir API, kas tiek izmantots definēt meklēšanas vai manipulēšanas modeli . To plaši izmanto, lai definētu virkņu ierobežojumus, piemēram, paroles un e-pasta validāciju.

Ir dažādas Java Regex izmantošanas metodes. Tāpēc ejam uz priekšu un apskatīsim dažādas izteiksmes.



Matcher klase

Šo klasi izmanto, lai veiktu rakstzīmju secības spēles. Zemāk esošajā tabulā attēlotas dažādas Matcher klases metodes.

Metode Apraksts
Būla spēles () Pārbauda, ​​vai dotā regulārā izteiksme atbilst paraugam
būla atradums () Izmanto, lai atrastu nākamo izteiksmi, kas atbilst paraugam
būla atradums (sākums) Meklē nākamo izteiksmi, kas atbilst paraugam no norādītā sākuma numura
Stīgu grupa () Izmanto, lai atgrieztu saskaņoto sekvenci
int sākums () Atgriež saskaņotās sekmes sākuma indeksu
int beigas () Atgriež saskaņotās sekcijas beigu indeksu
int groupCount () Atgriež saskaņotās sekcijas kopējo skaitu

Rakstu klase

Pattern Class ir apkopota regulārās izteiksmes versija, kas tiek izmantota regulārā motora modeļa noteikšanai.

Metode Apraksts
statiskā modeļa sastādīšana (virknes regex) Tas apkopo doto regex un atgriež Pattern instanci
Atbilst spēles (CharSequence ievade) To izmanto, lai izveidotu saskaņotāju, kas atbilst dotajam ievadam ar modeli
statiskas būla spēles (virknes regex, CharSequence ievade) Tas darbojas kā kompilēšanas un saskaņošanas metožu kombinācija. Tas apkopo regulāro izteiksmi un saskaņo norādīto ievadi ar modeli
Virknes [] sadalījums (ievade CharSequence) Izmanto, lai sadalītu doto ievades virkni ap noteiktā modeļa spēlēm
Stīgu raksts () Palīdz atgriezt regex modeli

Tagad ņemsim nelielu piemēru, lai saprastu, kā rakstīt regulāru izteiksmi.

importēt 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 ('Virkne atbilst norādītajam parastam - + matcher.matches ())}}

Šajā gadījumā iekšēji tas izmanto Pattern un Matcher regex klases nodarboties ar apstrādi, bet acīmredzot,tas samazina koda rindas. Pattern klasē ir arī atbilstības metode, kas regex un input String ņem par argumentu un pēc to saskaņošanas atgriež Būla rezultātu. Tātad kods darbojas labi, lai saskaņotu ievadi ar regulāru izteiksmi Java valodā. Tādējādi izeja būs patiesa, kā parādīts zemāk.

Izeja:
taisnība

virknes datuma konvertēšana Java

Apskatīsim vēl dažas Java regulāro izteicienu kategorijas.

Rakstzīmju klase Regex

Zemāk esošajā tabulā attēlota dažādu rakstzīmju klases kombinācija.

Rakstzīmju klaseApraksts
[abc] a, b vai c (vienkārša klase)
[^ abc] Jebkura rakstzīme, izņemot a, b vai c (noliegums)
[a-zA-Z] a līdz z vai A līdz Z, ieskaitot (diapazons)
[a-d [m-p]] no a līdz d vai no m līdz p: [a-dm-p] (savienojums)
[a-z && [def]] d, e vai f (krustojums)
[a-z && [^ bc]] no a līdz z, izņemot b un c: [ad-z] (atņemšana)
[a-z && [^ m-p]] no a līdz z, nevis m caur p: [a-lq-z] (atņemšana)

Piemērs:

importēt java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (nav x vai y vai z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (starp x vai y vai z) System.out.println (Pattern.matches ('[xyz]', 'x')) // // false (x un y nāk vairākas reizes) .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex kvantatori

Kvantifikatori norāda rakstzīmes atkārtošanās gadījumu skaitu. Zemāk esošajā tabulā attēloti dažādi kvantatori.

RegexApraksts
X? X notiek vienreiz vai vispār nenotiek
X + X notiek vienu vai vairākas reizes
X * X notiek nulle vai vairāk reizes
X {n} X notiek tikai n reizes
X {n,} X notiek n vai vairāk reizes
X un Z} X notiek vismaz y reizes, bet mazāk nekā z reizes

Piemērs:

importēt java.util.regex. * publiskā klase Piemērs {public static void main (String args []) {System.out.println ('? quantifier ....') // (a vai y vai z nāk vienreiz) System.out.println (Pattern.matches ('[ayz]?', 'A')) // izvads: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay un z nāk vairāk nekā vienu reizi) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a nāk vairāk nekā vienu reizi) sistēma. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a vai y vai z jānāk vienreiz) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // izvads: false System.out.println (' + quantifier .... ') // (a vai y vai z vienu vai vairākas reizes) System.out.println (Pattern .matches ('[ayz] +', 'a')) // output: true // (a nāk vairāk nekā vienu reizi) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a vai y vai z nāk vairākas reizes) System.out.println (Pattern.matches [[amn] + ',' aayyyzz ')) // output: true // (z un t neatbilst paraugam) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a vai y vai z var būt nulle vai vairāk reizes ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // izvade: true}}

Būtībā tas meklēs atbilstošo kvantifikatoru un atbilst meklēšanas rezultātam.

Regex Metacharacters

Regulārās izteiksmes metahomas darbojas kā īskodi. Apskatīsim zemāk esošo tabulu, lai saprastu dažādus metarakstus.

RegexApraksts
. Tas var būt jebkurš raksturs (var arī neatbilst terminatoram)
d Pārstāv visus ciparus, kas nepārsniedz [0–9]
D Pārstāv jebkuru ciparu bez saīsnes [^ 0-9]
s Pārstāv visus atstarpes rakstzīmes, saīsinājums no [tnx0Bfr]
S Tas var būt raksturs, kas nav atstarpes, saīsinājums no [^ s]
iekšā Tas var būt vārda raksturs, saīsinājums no [a-zA-Z_0-9]
IN Pārstāv jebkuru rakstzīmi, kas nav vārds, saīsinājums no [^ w]
b Pārstāv vārdu robežu
B Tā ir vārdu robeža

Piemērs:

Kas ir tostring metode java
importēt java.util.regex. * public class MetacharExample {public static void main (String args []) {// d nozīmē ciparu System.out.println ('metacharacters d ....') // (bez cipariem) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (cipars un nāk vienreiz) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (cipars, bet nāk vairāk nekā vienu reizi) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (cipars un char) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D nozīmē bez cipariem System.out.println ('metacharacters D ....') // (bez cipariem, bet nāk vairāk nekā vienu reizi) 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 // (cipars un rakstzīme) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (bez cipariem un nāk vienreiz) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metarakstus D ar kvantatoru ....') // (bez cipariem un var nākt 0 vai vairāk reizes) System.out.println (Pattern.matches ('D *', 'abc')) // Output : true}}

Pamatojoties uz iepriekšminētajiem nosacījumiem, tas parādīs izvadi. Tā tas darbojas. Tātad, tas bija viss par dažādiem veidiem Regex. Ar to mēs esam nonākuši pie šī raksta beigām. Esceru, ka jums tas šķita informatīvs. Ja vēlaties uzzināt vairāk, varat apskatīt mūsu arī.

Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Mēs esam šeit, lai palīdzētu jums katrā solī jūsu ceļojumā, lai kļūtu par papildus šiem Java intervijas jautājumiem, mēs piedāvājam mācību programmu, kas paredzēta studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī “Java Regex” raksta komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.