Regex, ili Regularni izraz, je niz znakova koji formira obrazac pretraživanja. Ovaj obrazac se može koristiti u obavljanju raznih zadataka kao što su validacija, uparivanje i zamjena, između ostalog. U Javi, regex je suštinski alat koji se koristi kada se radi sa stringovima. U ovom članku ćemo pogledati kako kreirati obrazac regularnog izraza za vrijeme.
Zadatak je konstruirati obrazac regularnog izraza koji može potvrditi konvencionalno vrijeme formata od 12 sati, kao što je '12:00 AM' ili '01:45 PM'.
public class Main { public static void main(String[] args) { // Test the pattern System.out.println("12:30 PM".matches("^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$")); // returns true } }
Ovaj obrazac `^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$` je konstruisan sa sljedećim obrazloženjem:
– `1[0-2]|0?[1-9]`: Ovaj dio obrasca provjerava sat. Prepoznaje bilo koju cifru od 01-09 i 10-12. '0?' označava da je vodeća nula opciona.
– `:` ovo je doslovni simbol koji odgovara dvotočku u unosu.
– `[0-5][0-9]`: Ovaj dio provjerava minute. Prihvata bilo koji broj od 00 do 59.
– `\s`: Odgovara znaku razmaka.
– `[AaPp][Mm]` – Ovaj dio provjerava da li je prijepodne ili popodne. Ovo omogućava unosu da prihvati i mala i velika slova.
Ovaj obrazac u konačnici osigurava savršeno formatirano vrijeme od 12 sati.
Java i Regex
The Java jezik uključuje regex od verzije 1.4. Da bi olakšala operacije regularnog izraza, Java je razvila `java.util.regex`, paket sa tri klase: `Pattern`, `Matcher` i `PatternSyntaxException`. Klasa `Pattern` pojednostavljuje iniciranje regex operacija, dok je klasa `Matcher` neophodna za izvođenje operacija podudaranja. Na kraju, `PatternSyntaxException`, podklasa `IllegalArgumentException`, označava svaku sintaksičku grešku u obrascu regularnog izraza.
- `Pattern.compile(String regex)`: Ova statička metoda iz klase `Pattern` kompajlira regularni izraz i dodjeljuje ga uzorku.
- `Pattern matcher(CharSequence input)`: Ova metoda instance kreira uparivač koji će upariti regularni izraz sa ulazom.
Dešifrovanje obrazaca regularnih izraza
Hvatanje regularni izraz obrasci u početku mogu izgledati zastrašujuće zbog velike upotrebe specijalnih znakova. Međutim, pažljiviji pogled može dešifrirati bilo koji uzorak:
– '^' je znak sidra koji označava početak reda. '$' označava kraj. Stoga, zajedno osiguravaju potpuno podudaranje niza, a ne samo podudaranje podniza.
– '1[0-2]|0?[1-9]' odgovara bilo kojoj cifri od 01-09 ili 10-12. Sa '|', regex uzima lijevi ili desni operand.
– '[0-5][0-9]' je raspon znamenki koji odgovara bilo kojoj cifri od 00-59.
– 's' odgovara bilo kojem znaku razmaka.
– Zagrade '[ ]' definiraju klasu znakova, omogućavajući vam da navedete više znakova za podudaranje.
Razumijevanje ovih pojedinačnih građevnih blokova otvara čitav svijet mogućnosti podudaranja obrazaca, čineći regex moćnim alatom u alatima bilo kojeg programera.