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:
- Kas yra įprasti posakiai?
- Kas yra „Java Regex“?
- „Matcher“ klasė
- Rašto klasė
- „Regex“ simbolių klasė
- „Regex“ kiekybininkai
- „Regex Metacharacters“
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.
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.
Regex | apibū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.
Regex | apibū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.