logo

Regulární výrazy v Javě

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í:



  1. Třída vzoru
  2. Třída Matcher
  3. Třída PatternSyntaxException
  4. 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
  1. Objekt vzoru vytvoříme voláním Pattern.compile(), neexistuje žádný konstruktor. Kompilovat() je statická metoda ve třídě Pattern.
  2. Podobně jako výše vytvoříme objekt Matcher pomocí matcher() na objektech třídy Pattern.
  3. Pattern.matches() je také statická metoda, která se používá ke kontrole, zda daný text jako celek odpovídá vzoru či nikoli.
  4. find() se používá k nalezení více výskytů vzorů v textu.
  5. 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ýstup

true true true>