Javassa Regular Expressions tai Regex (lyhyesti) Javassa on API merkkijonomallien määrittämiseen, jota voidaan käyttää merkkijonon etsimiseen, käsittelyyn ja muokkaamiseen Javassa. Sähköpostin vahvistus ja salasanat ovat muutamia merkkijonoalueita, joilla Regexiä käytetään laajalti rajoitusten määrittämiseen. Javan säännölliset lausekkeet tarjotaan alla java.util.regex paketti. Tämä koostuu 3 luokkaa ja 1 käyttöliittymä . The java.util.regex paketti koostuu pääasiassa seuraavista kolmesta luokasta, jotka on kuvattu alla taulukkomuodossa seuraavasti:
Regex-luokat ja käyttöliittymät
Regex Javassa tarjoaa 3 luokkaa ja 1 käyttöliittymän, jotka ovat seuraavat:
- Kuvioluokka
- Matcher luokka
- PatternSyntaxException Class
- MatchResult-käyttöliittymä
Lisää ymmärrystä voidaan tulkita alla olevasta kuvasta seuraavasti:
| Kyllä ei. | Luokka/käyttöliittymä | Kuvaus |
|---|---|---|
| 1. | Kuvioluokka | Käytetään kuvioiden määrittämiseen |
| 2. | Matcher luokka | Käytetään tekstin täsmäysoperaatioiden suorittamiseen kuvioiden avulla |
| 3. | PatternSyntaxException Class | Käytetään ilmaisemaan syntaksivirhe säännöllisen lausekkeen mallissa |
| 4. | MatchResult-käyttöliittymä | Käytetään kuvaamaan otteluoperaation tulosta |
Kuvioluokka
Tämä luokka on kokoelma säännöllisiä lausekkeita, joita voidaan käyttää erityyppisten kuvioiden määrittämiseen ilman julkisia rakentajia. Tämä voidaan luoda käynnistämällä compile()-metodi, joka hyväksyy säännöllisen lausekkeen ensimmäisenä argumenttina ja palauttaa siten kuvion suorituksen jälkeen.
| Kyllä ei. | Menetelmä | Kuvaus |
|---|---|---|
| 1. | kääntää (merkkijonon säännöllinen lauseke) | Sitä käytetään annetun säännöllisen lausekkeen kääntämiseen kuvioksi. |
| 2. | kääntää (merkkijonon säännöllinen lauseke, int liput) | Sitä käytetään kokoamaan annettu säännöllinen lauseke kuvioksi annetuilla lipuilla. |
| 3. | liput () | Sitä käytetään palauttamaan tämän kuvion otteluliput. |
| 4. | matcher (CharSequence-syöttö) | Sitä käytetään luomaan sovitin, joka vastaa annettua syötettä tähän malliin. |
| 5. | vastaa (merkkijonon säännöllinen lauseke, CharSequence-syöttö) | Sitä käytetään annetun säännöllisen lausekkeen kääntämiseen ja se yrittää sovittaa annettua syötettä siihen. |
| 6. | kuvio() | Sitä käytetään palauttamaan säännöllinen lauseke, josta tämä malli on käännetty. |
| 7. | lainaus (merkkijono) | Sitä käytetään palauttamaan kirjaimellinen kuviomerkkijono määritetylle merkkijonolle. |
| 8. | split (CharSequence-syöttö) | Sitä käytetään jakamaan annettu syöttösekvenssi tämän kuvion osumien ympärille. |
| 9. | split (CharSequence-tulo, int limit) | Sitä käytetään jakamaan annettu syöttösekvenssi tämän kuvion osumien ympärille. Raja-parametri määrää, kuinka monta kertaa kuviota käytetään. |
| 10. | toString() | Sitä käytetään palauttamaan tämän kuvion merkkijonoesitys. |
Esimerkki: Kuvioluokka
Java
// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }> |
>
>Lähtö
propositionaalinen logiikka
true false>
Matcher luokka
Tätä objektia käytetään suorittamaan sovitusoperaatioita syötemerkkijonolle Javassa, mikä tulkitsee aiemmin selitetyt kuviot. Tämäkään ei määrittele julkisia rakentajia. Tämä voidaan toteuttaa kutsumalla matcher() missä tahansa kuvioobjektissa.
| Kyllä ei. | Menetelmä | Kuvaus |
|---|---|---|
| 1. | löytö() | Sitä käytetään pääasiassa useiden säännöllisten lausekkeiden etsimiseen tekstissä. |
| 2. | etsi (alku) | Sitä käytetään säännöllisten lausekkeiden esiintymien etsimiseen tekstissä annetusta indeksistä alkaen. |
| 3. | alkaa() | Sitä käytetään etsi()-menetelmällä löydetyn osuman aloitusindeksin saamiseksi. |
| 4. | loppu () | Sitä käytetään etsimään hakumenetelmällä löydetyn osuman loppuindeksiä. Se palauttaa merkin indeksin viimeisen vastaavan merkin viereen. |
| 5. | groupCount() | Sitä käytetään etsimään vastaavan osasekvenssin kokonaismäärä. |
| 6. | ryhmä() | Sitä käytetään sopivan osasekvenssin etsimiseen. |
| 7. | Ottelut() | Sitä käytetään testaamaan, vastaako säännöllinen lauseke kuviota. |
Huomautus: T Pattern.matches() tarkistaa, vastaako koko teksti kuviota vai ei. Muita menetelmiä (esitetty alla) käytetään pääasiassa useiden kuvioiden esiintymiseen tekstissä.
Keskustellaanpa muutamasta esimerkkiohjelmasta, kuten teimme Pattern-luokassa. Tässä keskustelemme muutamasta Java-ohjelmasta, jotka esittelevät compile(), find(), start(), end() ja split()-toimintoja saadaksemme paremman käsityksen Matcher-luokasta.
Esimerkki 1: Kuvion haku
Java
// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com> | Kuvaus |
|---|---|
| [xyz] | x,y tai z |
| [^xyz] | Muut merkit kuin x, y tai z |
| [a-zA-Z] | merkit välillä a–z tai A–Z. |
| [a-f[m-t]] | Liitos a:sta f:hen ja m:stä t:hen. |
| [a-z && p-y] | Kaikki elementtialueet leikkaavat kahden alueen välillä |
| [a-z && [^bc]] | a–z liitto paitsi b ja c |
| [a-z && [^m-p]] | a–z liitto, jossa paitsi alue m–p |
Alla on yllä olevan aiheen toteutus:
Java
// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }> |
>
>Lähtö
true false>
Regex-metahahmot
| Regex | Kuvaus |
|---|---|
| X? | X näkyy kerran tai ei |
| X+ | X näkyy kerran tai useammin kuin kerran |
| X* | X näkyy nollana tai ei kerran |
| X{n} | X näkyy n kertaa |
| X{n,} | X esiintyy n kertaa tai enemmän kuin n |
| X{n,m} | X näyttää suuremmalta kuin n kertaa ja vähemmän kuin m kertaa. |
Alla on Regex-metamerkkien toteutus:
Java
// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }> |
>
>Lähtö
false true false true>
Java Regex Finder -esimerkki
| Regex | Kuvaus |
|---|---|
| . | Mikä tahansa hahmo |
| d | Mikä tahansa numero, [0-9] |
| D | Mikä tahansa muu kuin numero, [^0-9] |
| s | Välilyöntimerkki, [ x0Bf ] |
| S | Ei välilyöntejä, [^s] |
| Sisään | Sanamerkki, [a-zA-Z_0-9] |
| SISÄÄN | Ei-sanamerkki, [^w] |
|
| Sanan raja |
| B | Ei-sanojen raja |
Alla on Java Regex Finderin toteutus:
Java
mikä on kaiutin
// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }> |
>
>Lähtö
true false true true>
Johtopäätös
Lopuksi keskustelkaamme joistakin tärkeistä havainnoista, jotka on haettu yllä olevasta artikkelista
- Luomme malliobjektin kutsumalla Pattern.compile(), rakentajaa ei ole. compile() on Pattern-luokan staattinen menetelmä.
- Kuten edellä, luomme Matcher-objektin käyttämällä matcher():tä Pattern-luokan objekteille.
- Pattern.matches() on myös staattinen menetelmä, jota käytetään tarkistamaan, vastaako annettu teksti kokonaisuudessaan kuviota vai ei.
- find() -toimintoa käytetään etsimään useita kuvioiden esiintymiä tekstistä.
- Voimme jakaa tekstin erotinkuvion perusteella käyttämällä split()-menetelmää
Usein kysytyt kysymykset Java Regexissä
Q1. Mitä ovat säännölliset lausekkeet Javassa?
Vuodet:
Javan säännöllisiä lausekkeita käytetään merkkijonokuvioihin, joita voidaan käyttää merkkijonon etsimiseen, käsittelyyn ja muokkaamiseen Javassa.
Q2. Mikä on yksinkertainen esimerkki säännöllisestä lausekkeesta Javassa?
Vuodet:
Alla mainitaan yksinkertainen esimerkki säännöllisestä lausekkeesta javassa:
Java
// Java Program to check on Regex>import>java.io.*;>import>java.util.regex.*;>// Driver class>class>GFG {>>// Main function>>public>static>void>main(String[] args)>>{>>// Checks if the string matches with the regex>>// Should be single character a to z>>System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));>>// Check if all the elements are non-numbers>>System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));>>// Check if all the elements are non-spaces>>System.out.println(Pattern.matches(>'S+'>,>'gfg'>));>>}>}>>>Lähtötrue true true>