logo

Wyrażenia regularne w Javie

W Javie wyrażenia regularne lub Regex (w skrócie) w Javie to interfejs API służący do definiowania wzorców ciągów, których można używać do wyszukiwania, manipulowania i edytowania ciągów znaków w Javie. Sprawdzanie poprawności adresu e-mail i hasła to kilka obszarów ciągów, w których wyrażenie Regex jest powszechnie stosowane do definiowania ograniczeń. Wyrażenia regularne w Javie opisano poniżej java.util.regex pakiet. To składa się z 3 klasy i 1 interfejs . The java.util.regex pakiet składa się głównie z następujących trzech klas, jak przedstawiono poniżej w formie tabelarycznej w następujący sposób:

Klasy i interfejsy wyrażeń regularnych

Regex w Javie udostępnia 3 klasy i 1 interfejs, które są następujące:



  1. Klasa wzoru
  2. Klasa Matchera
  3. Klasa PatternSyntaxException
  4. Interfejs MatchResult

Więcej zrozumienia można zinterpretować na podstawie poniższego obrazu w następujący sposób:

Tak nie. Klasa/interfejs Opis
1. Klasa wzoru Służy do definiowania wzorców
2. Klasa Matchera Służy do wykonywania operacji dopasowania tekstu przy użyciu wzorców
3. Klasa PatternSyntaxException Służy do wskazywania błędu składniowego we wzorcu wyrażenia regularnego
4. Interfejs MatchResult Służy do reprezentowania wyniku operacji dopasowania

Klasa wzoru

Ta klasa jest kompilacją wyrażeń regularnych, których można używać do definiowania różnych typów wzorców, bez udostępniania konstruktorów publicznych. Można to utworzyć, wywołując metodę kompilacji(), która jako pierwszy argument przyjmuje wyrażenie regularne, zwracając w ten sposób wzorzec po wykonaniu.



Tak nie. metoda Opis
1. skompiluj (wyrażenie regularne) Służy do kompilowania danego wyrażenia regularnego we wzorzec.
2. skompiluj (wyrażenie regularne, flagi int) Służy do kompilowania danego wyrażenia regularnego we wzór z podanymi flagami.
3. flagi() Służy do zwracania flag dopasowania tego wzorca.
4. matcher (wejście CharSequence) Służy do tworzenia mechanizmu dopasowującego, który dopasuje dane wejściowe do tego wzorca.
5. dopasowania (wyrażenie regularne typu String, dane wejściowe CharSequence) Służy do kompilowania danego wyrażenia regularnego i próbuje dopasować do niego podane dane wejściowe.
6. wzór() Służy do zwrócenia wyrażenia regularnego, z którego skompilowano ten wzorzec.
7. cytat(Ciąg s) Służy do zwracania wzorca literału String dla określonego ciągu.
8. split (wejście CharSequence) Służy do dzielenia danej sekwencji wejściowej wokół dopasowań tego wzorca.
9. split (wejście CharSequence, int limit) Służy do dzielenia danej sekwencji wejściowej wokół dopasowań tego wzorca. Parametr limit kontroluje liczbę zastosowań wzoru.
10. doString() Służy do zwracania ciągu reprezentującego ten wzorzec.

Przykład: Klasa wzorcowa

Jawa






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

jaki rozmiar mojego monitora
>

>

Wyjście

true false>

Klasa Matchera

Obiekt ten służy do wykonywania operacji dopasowania łańcucha wejściowego w Javie, interpretując w ten sposób wyjaśnione wcześniej wzorce. To również nie definiuje żadnych konstruktorów publicznych. Można to zaimplementować, wywołując metodę matcher() na dowolnym obiekcie wzorca.

Tak nie. metoda Opis
1. znajdować() Służy głównie do wyszukiwania wielu wystąpień wyrażeń regularnych w tekście.
2. znajdź (int start) Służy do wyszukiwania wystąpień wyrażeń regularnych w tekście począwszy od podanego indeksu.
3. początek() Służy do uzyskania indeksu początkowego dopasowania znalezionego za pomocą metody find().
4. koniec() Służy do uzyskania indeksu końcowego dopasowania znalezionego metodą find(). Zwraca indeks znaku znajdującego się obok ostatniego pasującego znaku.
5. liczba grup() Służy do znalezienia całkowitej liczby dopasowanego podciągu.
6. Grupa() Służy do znalezienia dopasowanego podciągu.
7. mecze() Służy do sprawdzania, czy wyrażenie regularne pasuje do wzorca.

Notatka: T Pattern.matches() sprawdza, czy cały tekst pasuje do wzorca, czy nie. Inne metody (pokazane poniżej) służą głównie do wyszukiwania wielokrotnych wystąpień wzorców w tekście.

Omówmy kilka przykładowych programów, tak jak to zrobiliśmy w przypadku klasy Pattern. W tym miejscu omówimy kilka programów w Javie, które demonstrują działanie kompilacji(), find(), start(), end() i split(), aby lepiej zrozumieć klasę Matcher.

Przykład 1: Wyszukiwanie wzorców

Jawa




// 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>

Opis

[xyz]

x, y lub z

[^xyz]

Dowolne znaki inne niż x, y lub z

[a-zA-Z]

znaków z zakresu od a do z lub od A do Z.

[a-f[m-t]]

Suma a do f i m do t.

[a-z && p-y]

Cały zakres elementów przecina się pomiędzy dwoma zakresami

[a-z && [^bc]]

Związek a do z z wyjątkiem b i c

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

Związek a do z z wyjątkiem zakresu m do p

Poniżej realizacja powyższego tematu:

Jawa




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

>

>

Wyjście

true false>

Metaznaki wyrażeń regularnych

Wyrażenie regularne

Opis

X?

X pojawia się raz lub nie

X+

X pojawia się raz lub więcej niż raz

X*

X pojawia się jako zero lub nie raz

X{n}

X pojawia się n razy

X{n,}

c++ int na ciąg
X pojawia się n razy lub więcej niż n

X{n, m}

X pojawia się jako większe niż równe n razy i mniejsze niż m razy.

Poniżej znajduje się implementacja metaznaków Regex:

Jawa




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

>

>

Wyjście

false true false true>

Przykład wyszukiwarki wyrażeń regularnych w Javie

Wyrażenie regularne

Opis

.

Dowolna postać

D

Dowolne cyfry, [0-9]

D

Dowolna niecyfrowa, [^0-9]

S

Znak odstępu, [ x0Bf ]

S

Znak inny niż spacja, [^s]

w

Znak słowa, [a-zA-Z_0-9]

W

Znak inny niż słowo, [^w]

B

Granica słowa

B

Granica inna niż Word

Poniżej znajduje się implementacja narzędzia Java Regex Finder:

Jawa




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

>

>

Wyjście

true false true true>

Wniosek

Na koniec omówmy niektóre ważne obserwacje zaczerpnięte z powyższego artykułu

  1. Tworzymy obiekt wzorca wywołując Pattern.compile(), nie ma konstruktora. kompilacja() jest metodą statyczną w klasie Pattern.
  2. Podobnie jak powyżej, tworzymy obiekt Matcher za pomocą metody matcher() na obiektach klasy Pattern.
  3. Pattern.matches() to także metoda statyczna, która służy do sprawdzania, czy dany tekst jako całość pasuje do wzorca, czy nie.
  4. find() służy do wyszukiwania wielu wystąpień wzorców w tekście.
  5. Możemy podzielić tekst na podstawie wzorca ograniczników, korzystając z metody split().

Często zadawane pytania dotyczące wyrażeń regularnych Java

Pytanie 1. Co to są wyrażenia regularne w Javie?

Lata:

Wyrażenia regularne w Javie służą do tworzenia wzorców ciągów, których można używać do wyszukiwania, manipulowania i edytowania ciągów w Javie.

Pytanie 2. Jaki jest prosty przykład wyrażenia regularnego w Javie?

Lata:

przykłady kodu w języku c#

Prosty przykład wyrażenia regularnego w Javie znajduje się poniżej:

Jawa




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

>

>

Wyjście

true true true>