Praca z wyrażeniami regularnymi w Javie

Spisie treści
W dzisiejszych systemach informatycznych normalne jest widywanie funkcji wyszukiwania, te funkcje za każdym razem muszą zostać przetworzone wzory wielu innych kompleksów. Aby móc szczegółowo rozpatrzyć każdy przypadek, zajęłoby to kilka tysięcy lat, dlatego opracowano mechanizmy pozwalające na ustalenie sformułowanej reprezentacji wyszukiwań.
Te formuły można znaleźć w wyrażenia regularne, które pozwalają nam ustalić wzorce oceny ciągów tekstowych i zwracać dodatnią lub ujemną wartość, jeśli dany ciąg odpowiada lub nie wyrażonej formule.
w Jawa Możemy zaimplementować wyrażenia regularne w prosty sposób, ale wymaga to dość obszernego przestudiowania przez programistę, aby mógł poznać różne jego elementy.
Sposób, w jaki możemy wyrazić formuły, za pomocą których możemy testować nasze wzorce z konkretną konstrukcją kodu, nazwiemy to składnia wyrażeń regularnych.
Na co pozwala nam składnia?Składnia pozwala nam na ustalanie wzorców według typu znak, ilość, kombinacja znaku i ilości, zacznij od określonego elementu, ustaw wyrażenie dla środka formuły i końca. Dzięki temu możemy zidentyfikować bardzo specyficzne wzorce, które mogą być potrzebne w naszym programie lub być może w bardziej adekwatny sposób filtrować wyszukiwanie w tekście lub bazie danych.
Zobaczmy poniżej małą listę elementów najczęściej używanych w wyrażeniach regularnych z Jawa, jest o wiele więcej elementów niż te pokazane w tym samouczku, dlatego zaleca się przeprowadzenie własnych badań, aby wzmocnić wiedzę:
Początek linii\^ Z tym elementem przystępujemy do wskazania do Jawa który rozpoczyna linię w wyrażeniu regularnym.
Koniec linii$ Tym symbolem wskazujemy, że zakończyliśmy linię.
Lista znaków[] W nawiasach wskazujemy wyrażeniu regularnemu, że powinno szukać dowolnej z list znajdujących się w środku.
Wykluczać[\^] Pozwala nam wybrać dowolną postać, której nie ma na liście.
Kwantyfikator{j, k} Zlokalizuj, co jest w J wskazana liczba razy k; {J,} w tym drugim przypadku cokolwiek jest w J raz lub więcej razy; wreszcie {J} wskazuje, że to, co jest w środku, powinno się pojawić J tylko jeden raz.
Znaki słowne\ w Znajdź postacie, które należą do słowo, ale jeśli używamy \ W robi odwrotnie, lokalizuje postacie, które nie należą.
Cyfry\ D Pozwala nam na dopasowanie tylko cyframi i jeśli używamy \ D dopasujemy wszystko, co nie jest cyfrą lub znakiem numerycznym.
Puste\ s Pozwala nam dopasować spacje, takie jak tabulatory, spacja, ale jeśli użyjemy \ S robi odwrotnie, pasuje do wszystkiego, co nie jest białą spacją.
Jak widać z tych kilku elementów możemy budować różne kombinacje, dzięki którym możemy uzyskać stosunkowo złożone wzory.
Jeśli chcemy spróbować? zwykła fraza Przed skompilowaniem programu możemy skorzystać ze strony rubular.com, gdzie możemy ocenić wzorce w czasie rzeczywistym.

POWIĘKSZAĆ

Przeprowadzimy prosty przykład, w którym będziemy testować a wyrażenie regularne do sprawdzania poprawności wiadomości e-mail, użyjemy:
[_ a-z0-9 -] + (\. [_ a-z0-9 -] +) * @ [a-z0-9 -] + (\. [a-z0-9 -] +) * (\ . [az] {2,3}) $

Najpierw musimy wpisać wyrażenie regularne w pierwszym polu formularza strony rubular.pl następnie w polu zwanym twój ciąg testowy to miejsce, w którym będziemy testować różne e-maile, aby sprawdzić, czy wyrażenie regularne działa, zobaczmy, jak zachowuje się walidator, gdy wprowadzimy nieprawidłowy adres e-mail:

POWIĘKSZAĆ

Jak widać, w naszym przykładowym e-mailu brakuje kropki, więc jest nieważny i nie nie generuje dopasowania W wyrażeniu regularnym poprawimy to, umieszczając brakujący punkt, a walidator automatycznie wygeneruje pozytywną odpowiedź, co pozwoli nam zobaczyć, że nasze wyrażenie regularne działa bez problemu.

POWIĘKSZAĆ

Jak widać, jest to bardzo przydatne źródło, gdy uczymy się używać wyrażeń regularnych nie tylko w Jawa jeśli nie w jakimkolwiek języku.
Kiedy już wiemy, co robi każdy z podstawowych elementów składni, teraz musimy nauczyć się, jak możemy wykonać a wyszukaj wzór w Jawa, dzięki temu możemy zobaczyć, jakie metody, klasy i pakiety wchodzą w grę, gdy używamy wyrażeń regularnych.
Pierwszą rzeczą, którą powinniśmy wiedzieć, jest to, że wszystkie te narzędzia znajdują się w pakiecie java.util.regex, więc aby wykonać te przykłady, musimy dołączyć ten pakiet na początku naszych zajęć.
Po wykonaniu powyższych czynności możemy przetestować wzór w następujący sposób:
 if (ourString.matches (ourExpression)) {// Jeśli pasuje tutaj, wykonujemy kod} 

Widzimy, że używamy metody mecze (), to oceni ciąg znaków względem wzorca wyrażeń regularnych i zwróci prawda lub fałszywe, w przypadku, gdy ciąg znaków pasuje do wzorca, czy nie.
Ten rodzaj użycia jest w porządku w małych walidacjach, jednak jeśli zamierzamy użyć walidacji cyklicznej, czyli pojawi się ona wiele razy w naszym programie, najlepiej zrobić małą procedurę lub klasę, która pozwoli nam ocenić ciąg postaci parametrycznej, czyli procedury lub metody, która pozwala nam wprowadzić ciąg i zwrócić prawdę lub fałsz, już porównując z określonym wzorcem.
W poniższym programie przetestujemy mały wzorzec i porównamy go z kilkoma ciągami, a program powie nam, który z nich robi. dopasowanie, czyli który pasuje, a który nie, zobaczmy kod, a potem zobaczymy, jak to działa:
 import java.util.regex.*; public class TestPatterns {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; String [] input = {"QA777. Jest identyfikatorem naszego produktu.", "Quack, Quack, Quack!" }; Wzorzec p = Wzorzec.kompilacja (wzorzec); for (String in: input) {znalezienie wartości logicznej = p.matcher (in) .lookingAt (); System.out.println ("'" + wzorzec + "'" + (znaleziono? "Dopasowania"": "nie pasuje do '") + in + "'"); }}} 

Tutaj widzimy, jak pierwszą rzeczą, jaką robimy, jest import pakietu, o którym mowa na początku tej sekcji, aby w ten sposób uzyskać funkcjonalność wyszukiwania za pomocą wyrażeń regularnych. Następnie budujemy wzorzec, którego użyjemy to nasz program, w tym przypadku jest to wzorzec pasujący do litery „Q"W takim razie musi mieć dowolny znak oprócz litery"lub„I musi kończyć się kropką. Następnie kompilujemy nasz wzór za pomocą metody skompilować i możemy go użyć do wykonania dopasowań. Wreszcie, jeśli wzór pasuje, jest drukowany ze słowem dopasowanie w przeciwnym razie drukujemy to nie pasuje.
Zobaczmy na poniższym obrazku, jak to wygląda po uruchomieniu programu:

POWIĘKSZAĆ

Następnie odnotowujemy, jak wyjaśniono, pierwszy ciąg lub łańcuch, jeśli pasuje, ale drugi nie, i dla dalszego odniesienia umieszczamy wzorzec, na którym należy dokonać porównania.
Przeprowadzimy teraz bardziej zaawansowany przykład, zidentyfikujemy, która część naszego łańcucha pasuje, jest to bardzo przydatne, gdy robimy wyszukiwanie tekstowe, ponieważ dzięki temu moglibyśmy podświetlić dopasowania tego, co wpisuje użytkownik.
W tym celu użyjemy tej samej bazy naszego poprzedniego programu z pewnymi modyfikacjami, zobaczmy kod, a następnie objaśnienie:
 import java.util.regex.*; public class Match {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; Wzorzec r = Wzorzec.kompilacja (wzorzec); String text = "Id to: QW990. Koniec testu!"; Matcher m = r.matcher (tekst); if (m.find ()) {System.out.println (wzór + "dopasowuje \" "+ m.group (0) +" \ "wewnątrz \" "+ tekst +" \ ""); } else {System.out.println ("Brak dopasowań"); }}} 

Po raz kolejny widzimy, jak zaczynamy nasz program wraz z pakietem java.util.regex.*. Następnie używamy tego samego wzorca z poprzedniego programu i kompilujemy go metodą skompilować, ciekawostka nadchodzi teraz, zastosowaliśmy metodę dopasowanie () zlokalizować dopasowanie, a następnie metodą znajdować () i metoda Grupa () możemy wyodrębnić dokładnie to, co pasuje, na koniec wykonujemy odpowiednie nadruki. Zobaczmy teraz, jak wygląda nasz program:

POWIĘKSZAĆ

Widzimy więc, jak udało nam się wyizolować słowo, które naprawdę pasuje do wzorca, który zaaranżowaliśmy dla porównania zwykła fraza.
Jedną z najczęściej używanych aplikacji jest formularze, gdzie możemy przeprowadzać walidacje e-maile, numery telefonów, karty kredytowe, hasła, adresy IP, nazwy użytkowników, kody pocztowe a nawet sprawdzić, czy wszystkie nasze tagi w naszym dokumencie HTML są poprawnie zamknięte, co daje nam możliwość uzyskania większego bezpieczeństwa w przetwarzaniu przez nas tekstu wprowadzanego przez użytkowników.
Ale nie tylko w walidacjach w polach formularza, jak zauważyliśmy w naszym ostatnim przykładzie, również możemy to zrobić długie wyszukiwanie tekstu Według określonego wzorca możemy dzięki niemu przeszukiwać bardzo złożone dokumenty tekstowe w sposób systematyczny, a tym samym zaoszczędzić sporo czasu, po prostu pisząc mały program.
Na tym kończymy ten samouczek, dowiedzieliśmy się, jak możemy przejść od posiadania różnych elementów do wyrażania sytuacji w naszych wzorcach do skutecznego wykonywania odpowiednich porównań tekstu lub znaków, które chcemy ocenić, wszystko to dzięki wyrażenia regularne. Te oceny są dość szybkie dzięki optymalizacji, którą język wykonuje w metodach, które nam oferuje, więc są bardzo odpowiednie do budowy interfejsów, w których musimy przeszukiwać i sprawdzać tekst, który wprowadza użytkownik.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt
wave wave wave wave wave