V Javě je Regular Expressions nebo Regex (zkráceně) v Javě API pro definování vzorců řetězců, které lze použít pro vyhledávání, manipulaci a úpravy řetězce v Javě. Ověření e-mailu a hesla jsou několik oblastí řetězců, kde se Regex široce používá k definování omezení. Regulární výrazy v Javě jsou poskytovány pod java.util.regex balík. Toto se skládá z 3 třídy a 1 rozhraní . The java.util.regex balíček se primárně skládá z následujících tří tříd, jak je znázorněno níže v tabulkovém formátu takto:
Třídy a rozhraní Regex
Regex v Javě poskytuje 3 třídy a 1 rozhraní, které jsou následující:
- Třída vzoru
- Třída Matcher
- Třída PatternSyntaxException
- Rozhraní MatchResult
Více porozumění lze interpretovat z obrázku níže takto:
| Ano ne. | Třída/Rozhraní | Popis |
|---|---|---|
| 1. | Třída vzoru | Používá se pro definování vzorů |
| 2. | Třída Matcher | Používá se k provádění operací shody s textem pomocí vzorů |
| 3. | Třída PatternSyntaxException | Používá se k označení syntaktické chyby ve vzoru regulárního výrazu |
| 4. | Rozhraní MatchResult | Používá se pro znázornění výsledku operace shody |
Třída vzoru
Tato třída je kompilací regulárních výrazů, které lze použít k definování různých typů vzorů a neposkytuje žádné veřejné konstruktory. To lze vytvořit vyvoláním metody kompilovat() , která přijímá regulární výraz jako první argument, čímž po spuštění vrací vzor.
| Ano ne. | Metoda | Popis |
|---|---|---|
| 1. | zkompilovat (regulární výraz řetězce) | Slouží k sestavení daného regulárního výrazu do vzoru. |
| 2. | zkompilovat (regulární výraz řetězce, příznaky int) | Slouží k sestavení daného regulárního výrazu do vzoru s danými příznaky. |
| 3. | příznaky() | Používá se k vrácení příznaků shody tohoto vzoru. |
| 4. | matcher (vstup znakové sekvence) | Slouží k vytvoření dorovnávače, který porovná daný vstup s tímto vzorem. |
| 5. | odpovídá (regulární výraz řetězce, vstup znakové sekvence) | Slouží ke kompilaci daného regulárního výrazu a pokouší se s ním porovnat daný vstup. |
| 6. | vzor() | Používá se k vrácení regulárního výrazu, ze kterého byl tento vzor sestaven. |
| 7. | citát (řetězec s) | Používá se k vrácení doslovného vzoru String pro zadaný řetězec. |
| 8. | split (vstup CharSequence) | Používá se k rozdělení dané vstupní sekvence kolem shod tohoto vzoru. |
| 9. | split (vstup CharSequence, int limit) | Používá se k rozdělení dané vstupní sekvence kolem shod tohoto vzoru. Parametr limit řídí, kolikrát je vzor aplikován. |
| 10. | toString() | Používá se k vrácení řetězcové reprezentace tohoto vzoru. |
Příklad: Třída vzoru
Jáva
// 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ýstup
true false>
Třída dohazovačů
Tento objekt se používá k provádění operací shody pro vstupní řetězec v Javě, čímž se interpretují dříve vysvětlené vzory. To také nedefinuje žádné veřejné konstruktory. To lze implementovat vyvoláním matcher() na libovolném objektu vzoru.
| Ano ne. | Metoda | Popis |
|---|---|---|
| 1. | nalézt() | Používá se hlavně pro vyhledávání více výskytů regulárních výrazů v textu. |
| 2. | najít (int start) | Slouží k vyhledávání výskytů regulárních výrazů v textu od daného indexu. |
| 3. | Start() | Používá se pro získání počátečního indexu shody, která je nalezena pomocí metody find(). |
| 4. | konec() | Používá se pro získání koncového indexu shody, která je nalezena pomocí metody find(). Vrátí index znaku vedle posledního shodného znaku. |
| 5. | groupCount() | Používá se k nalezení celkového počtu spárovaných podsekvencí. |
| 6. | skupina() | Používá se k nalezení odpovídající podsekvence. |
| 7. | zápasy() | Používá se k testování, zda regulární výraz odpovídá vzoru. |
Poznámka: T Pattern.matches() kontroluje, zda se celý text shoduje se vzorem nebo ne. Jiné metody (demonstrované níže) se používají hlavně k nalezení více výskytů vzorů v textu.
Pojďme si probrat několik ukázkových programů, jako jsme to udělali pro třídu Pattern. Zde budeme diskutovat o několika Java programech, které demonstrují fungování kompilace(), find(), start(), end() a split(), abychom lépe porozuměli třídě Matcher.
Příklad 1: Hledání vzoru
Jáva
// 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 nebo z |
| [^xyz] | Jakékoli jiné znaky než x, y nebo z |
| [a-zA-Z] | znaky z rozsahu a až z nebo A až Z. |
| [a-f[m-t]] | Spojení a až f a m až t. |
| [a-z && p-y] | Všechny rozsahy prvků se protínají mezi dvěma rozsahy |
| [a-z && [^bc]] | a až z spojení s výjimkou b a c |
| [a-z && [^m-p]] | a až z sjednocení s výjimkou rozsahu m až p |
Níže je implementace výše uvedeného tématu:
Jáva
// 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ýstup
true false>
Regex metaznaky
| Regex | Popis |
|---|---|
| X? | X se objeví jednou nebo ne |
| X+ | X se objeví jednou nebo vícekrát |
| X* | X se objeví nula nebo ne jednou |
| X{n} | X se objeví nkrát |
| X{n,} | X se objeví nkrát nebo více než n |
| X{n,m} | X se jeví jako větší než rovno nkrát a menší než mkrát. |
Níže je uvedena implementace metaznaků Regex:
Jáva
// 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ýstup
false true false true>
Příklad Java Regex Finder
| Regex | Popis |
|---|---|
| . | Jakákoli postava |
| d | Libovolné číslice, [0-9] |
| D | Libovolné jiné než číslice, [^0-9] |
| s | Mezera, [ x0Bf ] |
| S | Znak bez mezer, [^s] |
| V | Slovní znak, [a-zA-Z_0-9] |
| V | Neslovný znak, [^w] |
|
| Hranice slova |
| B | Hranice mimo slova |
Níže je uvedena implementace Java Regex Finder:
Jáva
// 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ýstup
true false true true>
Závěr
Nakonec pojďme diskutovat o některých důležitých postřezích získaných z výše uvedeného článku
plná forma ide
- Objekt vzoru vytvoříme voláním Pattern.compile(), neexistuje žádný konstruktor. Kompilovat() je statická metoda ve třídě Pattern.
- Podobně jako výše vytvoříme objekt Matcher pomocí matcher() na objektech třídy Pattern.
- Pattern.matches() je také statická metoda, která se používá ke kontrole, zda daný text jako celek odpovídá vzoru či nikoli.
- find() se používá k nalezení více výskytů vzorů v textu.
- Text můžeme rozdělit na základě oddělovacího vzoru pomocí metody split().
Nejčastější dotazy v Java Regex
Q1. Co jsou regulární výrazy v Javě?
roky:
Regulární výrazy v jazyce Java se používají pro vzory řetězců, které lze použít pro vyhledávání, manipulaci a úpravy řetězce v jazyce Java.
Q2. Jaký je jednoduchý příklad regulárního výrazu v Javě?
roky:
Níže je uveden jednoduchý příklad regulárního výrazu v jazyce Java:
Jáva
// 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ýstuptrue true true>