Java Regex - co to są wyrażenia regularne i jak ich używać?



Java Regex to interfejs API, który służy do definiowania wzorca wyszukiwania lub manipulowania ciągami. W tym artykule omówimy również różne klasy wyrażeń regularnych udostępnianych przez Javę.

Ekstrakcja lub walidacja danych to ważny aspekt każdego języka programowania. Jednym z najpopularniejszych sposobów sprawdzania poprawności danych jest używanie wyrażeń regularnych. używa tychwyrażenia regularne opisujące wzorzec znaków. Ten artykuł na temat Java Regex wypisze różne metody używania wyrażeń w następującej kolejności:

Zacznijmy!





Co to są wyrażenia regularne?

DO Wyrażenie regularne to sekwencja znaków tworząca wzorzec wyszukiwania. Podczas wyszukiwania danych w tekście możesz użyć tego wzorca wyszukiwania, aby opisać to, czego szukasz.

Wyrażenia regularne - Java Regex - Edureka



Wyrażeniem regularnym może być pojedynczy znak lub bardziej skomplikowany wzór. Może być używany do wszelkiego rodzaju operacji wyszukiwania i zamiany tekstu. Wzorzec Regex składa się z prostych znaków, takich jak / abc / lub połączenie prostych i specjalnych znaków, takich jak /ABC/ lub /example(d+).d*/ .

Co to jest Java Regex?

Plik Java Regex to API, które jest używane do zdefiniować wzorzec wyszukiwania lub manipulowania . Jest szeroko stosowany do definiowania ograniczeń dotyczących ciągów znaków, takich jak hasło i weryfikacja adresu e-mail.

Istnieją różne metody korzystania z języka Java Regex. Więc przejdźmy dalej i przyjrzyjmy się różnym wyrażeniom.



Klasa dopasowująca

Ta klasa służy do wykonywania operacji dopasowywania na sekwencji znaków. Poniższa tabela przedstawia różne metody klasy Matcher.

metoda Opis
dopasowania logiczne () Sprawdza, czy dane wyrażenie regularne pasuje do wzorca
boolean find () Służy do znajdowania następnego wyrażenia pasującego do wzorca
boolean find (int start) Wyszukuje następne wyrażenie, które pasuje do wzorca z podanego numeru początkowego
Grupa ciągów () Służy do zwracania dopasowanego podciągu
int start () Zwraca początkowy indeks dopasowanego podciągu
int end () Zwraca końcowy indeks dopasowanego podciągu
int groupCount () Zwraca całkowitą liczbę dopasowanych podciągów

Klasa wzoru

Klasa wzorca to skompilowana wersja wyrażenia regularnego, która służy do definiowania wzorca dla silnika wyrażeń regularnych.

metoda Opis
statyczna kompilacja wzorca (wyrażenie regularne String) Kompiluje podane wyrażenie regularne i zwraca wystąpienie wzorca
Dopasowuje dopasowania (dane wejściowe CharSequence) Służy do tworzenia dopasowania, które dopasowuje dane wejście do wzorca
statyczne dopasowania boolowskie (ciąg regex, wejście CharSequence) Działa jako połączenie metod kompilacji i dopasowywania. Kompiluje wyrażenie regularne i dopasowuje podane dane wejściowe do wzorca
String [] split (dane wejściowe CharSequence) Służy do dzielenia podanego ciągu wejściowego wokół dopasowań danego wzorca
Wzór ciągu () Pomaga zwrócić wzorzec wyrażenia regularnego

Teraz weźmy mały przykład, aby zrozumieć, jak napisać wyrażenie regularne.

import java.util.regex. * public class RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('Ciąg pasuje do podanego Regex - + matcher.matches ())}}

W tym przypadku wewnętrznie używa Pattern i Matcher klasy regex do przetwarzania, ale oczywiściezmniejsza liczbę linii kodu. Klasa Pattern zawiera również metodę dopasowań, która jako argument przyjmuje wyrażenie regularne i ciąg wejściowy, a po ich dopasowaniu zwraca wynik boolowski. Więc kod działa dobrze przy dopasowywaniu danych wejściowych z wyrażeniem regularnym w Javie. W związku z tym dane wyjściowe będą prawdziwe, jak pokazano poniżej.

Wynik:
prawdziwe

Przyjrzyjmy się teraz kilku innym kategoriom wyrażeń regularnych Java.

Klasa znaków Regex

Poniższa tabela przedstawia różne kombinacje klas znaków.

Klasa postaciOpis
[ABC] a, b lub c (klasa prosta)
[^ abc] Dowolny znak z wyjątkiem a, b lub c (negacja)
[a-zA-Z] od a do z lub od A do Z, włącznie (zakres)
[a-d [m-p]] a do d lub m do p: [a-dm-p] (suma)
[a – z && [def]] d, e lub f (przecięcie)
[a – z && [^ bc]] a do z, z wyjątkiem b i c: [ad-z] (odejmowanie)
[a-z && [^ m-p]] od a do z, a nie od m do p: [a-lq-z] (odejmowanie)

Przykład:

import java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (między x, y lub z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x i y występuje więcej niż raz) System .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Kwantyfikatory wyrażeń regularnych

Kwantyfikatory określają liczbę wystąpień znaku. Poniższa tabela przedstawia różne kwantyfikatory.

jak analizować xml w java
RegexOpis
X? X występuje raz lub wcale
X + X występuje raz lub więcej razy
X * X występuje zero lub więcej razy
X {n} X występuje tylko n razy
X {n,} X występuje n lub więcej razy
X i Z} X występuje co najmniej y razy, ale mniej niż z razy

Przykład:

import java.util.regex. * public class Przykład {public static void main (String args []) {System.out.println ('? quantifier ....') // (a lub y lub z pojawia się raz) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay i z pojawia się więcej niż jeden raz) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a występuje więcej niż jeden raz) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a lub y lub z muszą nadejść jeden raz) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a lub y lub z raz lub więcej razy) System.out.println (Pattern .matches ('[ayz] +', 'a')) // output: true // (a występuje więcej niż jeden raz) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a lub y lub z występuje więcej niż raz) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z it nie pasują do wzorca) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a lub y lub z może przyjść zero lub więcej razy ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // wyjście: prawda}}

Zasadniczo wyszuka pasujący kwantyfikator i dopasuje wynik wyszukiwania.

Metaznaki Regex

Metaznaki wyrażeń regularnych działają jako skróty. Rzućmy okiem na poniższą tabelę, aby zrozumieć różne typy metaznaków.

RegexOpis
. Może to być dowolny znak (może pasować do terminatora lub nie)
re Reprezentuje dowolne cyfry z wyjątkiem [0–9]
re Reprezentuje dowolną niecyfrową, skrót od [^ 0-9]
s Reprezentuje dowolny biały znak, skrót od [tnx0Bfr]
S Może to być znak niebędący białą spacją, skrót od [^ s]
w Może to być znak słowa, skrót od [a-zA-Z_0-9]
W Reprezentuje dowolny znak niebędący słowem, skrót od [^ w]
b Reprezentuje granicę słowa
b To nie jest granica słów

Przykład:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d oznacza cyfrę System.out.println ('metaznaki d ....') // (non-cyfra) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (cyfra i przychodzi raz) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (cyfra, ale pojawia się więcej niż raz) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (cyfra i znak) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D oznacza niecyfrowe System.out.println ('metaznaki D ....') // (niecyfrowe, ale pojawia się więcej niż raz) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // It's a Digit System.out.println (Pattern.matches ('D', '1 ')) // Wyjście: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Wyjście: false // (cyfra i znak) System.out.println (Pattern.matches (' D ',' 323abc ')) // Wyjście: false // (niecyfrowe i pojawia się raz) System.out.println (Pattern.matches (' D ',' m ')) // Wyjście: true System.out .pr intln ('metaznaki D z kwantyfikatorem ....') // (niecyfrowe i może wystąpić 0 lub więcej razy) System.out.println (Pattern.matches ('D *', 'abc')) // Wyjście : prawdziwe } }

W oparciu o powyższe warunki wyświetli dane wyjściowe. Tak to działa. Więc to wszystko dotyczyło różnych typów Regex. W ten sposób dochodzimy do końca tego artykułu. jaMam nadzieję, że znalazłeś to pouczające. Jeśli chcesz dowiedzieć się więcej, zajrzyj do naszego także.

Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży, aby zostać oprócz tych pytań do rozmowy kwalifikacyjnej w języku Java, opracowaliśmy program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego artykułu „Java Regex”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.