logo

Regulárne výrazy v Jave

V Jave sú regulárne výrazy alebo Regex (v skratke) v Jave API na definovanie vzorov reťazcov, ktoré možno použiť na vyhľadávanie, manipuláciu a úpravu reťazca v Jave. Overenie e-mailu a heslá sú niekoľko oblastí reťazcov, kde sa Regex široko používa na definovanie obmedzení. Regulárne výrazy v jazyku Java sú poskytované pod java.util.regex balík. Toto pozostáva z 3 triedy a 1 rozhranie . The java.util.regex balík primárne pozostáva z nasledujúcich troch tried, ako je znázornené nižšie v tabuľkovom formáte takto:

Regex triedy a rozhrania

Regex v jazyku Java poskytuje 3 triedy a 1 rozhranie, ktoré sú nasledovné:



  1. Trieda vzoru
  2. Matcher Class
  3. Trieda PatternSyntaxException
  4. Rozhranie MatchResult

Viac pochopenia možno interpretovať z obrázku nižšie takto:

Áno nie. Trieda/Rozhranie Popis
1. Trieda vzoru Používa sa na definovanie vzorov
2. Trieda Matcher Používa sa na vykonávanie operácií zhody s textom pomocou vzorov
3. Trieda PatternSyntaxException Používa sa na označenie chyby syntaxe vo vzore regulárneho výrazu
4. Rozhranie MatchResult Používa sa na znázornenie výsledku operácie zápasu

Trieda vzoru

Táto trieda je kompiláciou regulárnych výrazov, ktoré možno použiť na definovanie rôznych typov vzorov, pričom neposkytuje žiadne verejné konštruktory. Dá sa to vytvoriť vyvolaním metódy kompilovať(), ktorá akceptuje regulárny výraz ako prvý argument, čím po vykonaní vráti vzor.



Áno nie. Metóda Popis
1. kompilovať (regulárny výraz reťazca) Slúži na zostavenie daného regulárneho výrazu do vzoru.
2. kompilovať (regulárny výraz reťazca, príznaky int) Slúži na zostavenie daného regulárneho výrazu do vzoru s danými príznakmi.
3. vlajky() Používa sa na vrátenie príznakov zhody tohto vzoru.
4. matcher (vstup CharSequence) Používa sa na vytvorenie párovača, ktorý priradí daný vstup k tomuto vzoru.
5. zhody (regulárny výraz reťazca, vstup znakovej sekvencie) Používa sa na kompiláciu daného regulárneho výrazu a pokúša sa s ním porovnať daný vstup.
6. vzor() Používa sa na vrátenie regulárneho výrazu, z ktorého bol tento vzor zostavený.
7. citát (reťazec s) Používa sa na vrátenie doslovného vzoru String pre zadaný reťazec.
8. rozdelenie (vstup CharSequence) Používa sa na rozdelenie danej vstupnej sekvencie okolo zhôd tohto vzoru.
9. rozdelenie (vstup CharSequence, int limit) Používa sa na rozdelenie danej vstupnej sekvencie okolo zhôd tohto vzoru. Parameter limit riadi, koľkokrát sa vzor použije.
10. natiahnuť() Používa sa na vrátenie reťazcovej reprezentácie tohto vzoru.

Príklad: Trieda vzorov

Java

pridávanie reťazcov 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'>));> >}> }>

>

>

Výkon

true false>

Trieda dohadzovačov

Tento objekt sa používa na vykonávanie operácií zhody pre vstupný reťazec v jazyku Java, čím sa interpretujú vyššie vysvetlené vzory. Toto tiež nedefinuje žiadne verejné konštruktory. Dá sa to implementovať vyvolaním matcher() na ľubovoľnom objekte vzoru.

Áno nie. Metóda Popis
1. Nájsť() Používa sa hlavne na vyhľadávanie viacerých výskytov regulárnych výrazov v texte.
2. nájsť (int start) Používa sa na vyhľadávanie výskytov regulárnych výrazov v texte od daného indexu.
3. začať () Používa sa na získanie počiatočného indexu zhody, ktorá sa nachádza pomocou metódy find().
4. koniec() Používa sa na získanie koncového indexu zhody, ktorá sa nachádza pomocou metódy find(). Vráti index znaku vedľa posledného vyhovujúceho znaku.
5. groupCount() Používa sa na nájdenie celkového počtu spárovaných podsekvencií.
6. skupina() Používa sa na nájdenie zhodnej podsekvencie.
7. zápasy() Používa sa na testovanie, či sa regulárny výraz zhoduje so vzorom.

Poznámka: T Pattern.matches() kontroluje, či sa celý text zhoduje so vzorom alebo nie. Iné metódy (uvedené nižšie) sa používajú najmä na nájdenie viacerých výskytov vzorov v texte.

Poďme diskutovať o niekoľkých vzorových programoch, ako sme to urobili pre triedu Pattern. Tu budeme diskutovať o niekoľkých programoch Java, ktoré demonštrujú fungovanie kompilácie(), find(), start(), end() a split(), aby sme lepšie porozumeli triede Matcher.

Príklad 1: Vyhľadávanie vzorov

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>

Popis

[xyz]

x, y alebo z

[^xyz]

Akékoľvek znaky iné ako x, y alebo z

[a-zA-Z]

znaky od a do z alebo od A po Z.

[a-f[m-t]]

Spojenie a až f a m až t.

[a-z && p-y]

Celý rozsah prvkov sa pretína medzi dvoma rozsahmi

[a-z && [^bc]]

a až z spojenie s výnimkou b a c

[a-z && [^m-p]]

a až z zväzok s výnimkou rozsahu m až p

Nižšie je uvedená implementácia vyššie uvedenej témy:

Java




príklad používateľského mena
// 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'>));> >}> }>

>

>

Výkon

true false>

Metaznaky regulárneho výrazu

Regex

Popis

X?

X sa objaví raz alebo nie

X+

X sa objaví raz alebo viackrát

X*

X sa zobrazí nula alebo ani raz

X{n}

X sa objaví n-krát

X{n,}

X sa objavuje n-krát alebo viac ako n

X{n,m}

X sa javí ako väčšie ako rovné n-krát a menšie ako m-krát.

Nižšie je uvedená implementácia metaznakov Regex:

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'>));> >}> }>

>

>

Výkon

false true false true>

Príklad Java Regex Finder

Regex

Popis

.

Akýkoľvek charakter

d

Akékoľvek číslice, [0-9]

D

Akékoľvek iné ako číslice, [^0-9]

s

Medzera, [ x0Bf ]

S

Znak bez medzery, [^s]

In

Slovný znak, [a-zA-Z_0-9]

IN

java získať aktuálny čas
Neslovný znak, [^w]



Hranica slova

B

Hranica mimo slova

Nižšie je uvedená implementácia nástroja Java Regex Finder:

Java




// 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'>));> >}> }>

>

>

Výkon

true false true true>

Záver

Nakoniec si poďme diskutovať o niektorých dôležitých pozorovaniach získaných z vyššie uvedeného článku

  1. Objekt vzoru vytvoríme volaním Pattern.compile(), neexistuje žiadny konštruktor. kompilovať() je statická metóda v triede Pattern.
  2. Podobne ako vyššie, vytvoríme objekt Matcher pomocou matcher() na objektoch triedy Pattern.
  3. Pattern.matches() je tiež statická metóda, ktorá sa používa na kontrolu, či daný text ako celok zodpovedá vzoru alebo nie.
  4. find() sa používa na nájdenie viacerých výskytov vzorov v texte.
  5. Text môžeme rozdeliť na základe vzoru oddeľovača pomocou metódy split().

Časté otázky v jazyku Java Regex

Q1. Čo sú regulárne výrazy v jazyku Java?

Roky:

Regulárne výrazy v jazyku Java sa používajú pre vzory reťazcov, ktoré možno použiť na vyhľadávanie, manipuláciu a úpravu reťazca v jazyku Java.

Q2. Aký je jednoduchý príklad regulárneho výrazu v Jave?

Roky:

Jednoduchý príklad regulárneho výrazu v jazyku Java je uvedený nižšie:

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'>));> >}> }>

>

>

Výkon

true true true>