Java Regex - Co jsou regulární výrazy a jak je používat?



Java Regex je API, které se používá k definování vzoru pro hledání nebo manipulaci s řetězci. Tento článek bude také hovořit o různých třídách regulárních výrazů poskytovaných Java.

Extrakce nebo validace dat je důležitým aspektem každého programovacího jazyka. Jedním z nejpopulárnějších způsobů ověření dat je používání regulárních výrazů. používá tytoregulární výrazy popisující vzor znaků. Tento článek o Java Regex vyjmenuje různé způsoby použití výrazů v následujícím pořadí:

Začněme!





Co jsou regulární výrazy?

NA Regulární výraz je posloupnost znaků, která vytváří vyhledávací vzor. Při vyhledávání dat v textu můžete pomocí tohoto vyhledávacího vzoru popsat, co hledáte.

Regulární výrazy - Java Regex - Edureka



Regulární výraz může být a jeden znak nebo složitější vzor. Lze jej použít pro jakýkoli typ operace vyhledávání textu a nahrazení textu. Regexový vzor se skládá z jednoduchých znaků, například / abc / , nebo kombinace jednoduchých a zvláštních znaků, například / ab * c / nebo /example(d+).d*/ .

Co je Java Regex?

The Java Regex je API, na které je zvyklý definovat vzor pro vyhledávání nebo manipulaci . Je široce používán k definování omezení řetězců, jako je ověření hesla a e-mailu.

Existují různé způsoby použití Java Regex. Pojďme tedy kupředu a podívejme se na různé výrazy.



Matcher Class

Tato třída se používá k provádění operací shody v posloupnosti znaků. Níže uvedená tabulka představuje různé metody třídy Matcher.

Metoda Popis
booleovské zápasy () Testuje, zda daný regulární výraz odpovídá vzoru
booleovský nález () Slouží k nalezení dalšího výrazu, který odpovídá vzoru
boolean find (int start) Hledá další výraz, který odpovídá vzoru z daného počátečního čísla
Řetězcová skupina () Slouží k vrácení shodné subsekvence
int start () Vrátí počáteční index odpovídající subsekvence
zamýšlet() Vrátí koncový index odpovídající subsekvence
int groupCount () Vrátí celkový počet odpovídající subsekvence

Třída vzoru

Pattern Class je kompilovaná verze regulárního výrazu, která se používá k definování vzoru pro regex engine.

Metoda Popis
statická kompilace vzoru (String regex) Zkompiluje daný regulární výraz a vrátí instanci vzoru
Odpovídá shodám (vstup CharSequence) Používá se k vytvoření porovnávače, který odpovídá danému vstupu se vzorem
statické booleovské shody (String regex, vstup CharSequence) Funguje to jako kombinace kompilačních a porovnávacích metod. Zkompiluje regulární výraz a porovná daný vstup se vzorem
Rozdělit řetězec [] (vstup CharSequence) Používá se k rozdělení zadaného řetězce řetězce kolem shod daného vzoru
Řetězcový vzor () Pomáhá vrátit vzor regulárního výrazu

Nyní si vezmeme malý příklad, abychom pochopili, jak psát regulární výraz.

import java.util.regex. * veřejná třída RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('Řetězec odpovídá danému Regexu - + matcher.matches ())}}

V tomto případě interně používá Pattern a Matcher zpracování regex tříd, ale samozřejmě,snižuje kódové řádky. Třída vzoru také obsahuje metodu shod, která bere regex a zadává řetězec jako argument a po jejich shodě vrátí booleovský výsledek. Takže kód funguje dobře pro odpovídající vstup s regulárním výrazem v Javě. Proto bude výstup pravdivý, jak je uvedeno níže.

Výstup:
skutečný

Nyní se podívejme na několik dalších kategorií regulárních výrazů Java.

jak analyzovat xml v java

Třída znaků regulárního výrazu

Níže uvedená tabulka představuje kombinaci různých tříd znaků.

Třída znakůPopis
[abc] a, b nebo c (jednoduchá třída)
[^ abc] Libovolný znak kromě a, b nebo c (negace)
[a-zA-Z] a až z nebo A až Z včetně (rozsah)
[a-d [m-p]] a až d nebo m až p: [a-dm-p] (sjednocení)
[a-z && [def]] d, e nebo f (průsečík)
[a-z && [^ bc]] a až z, s výjimkou bac: [ad-z] (odčítání)
[a-z && [^ m-p]] a až z, a ne m až p: [a-lq-z] (odčítání)

Příklad:

import java.util.regex. * veřejná třída CharacterExample {public static void main (String args []) {// false (ne x nebo y nebo z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (mezi x nebo y nebo z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x a y přichází více než jednou) Systém .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex kvantifikátory

Kvantifikátory určují počet výskytů znaku. Níže uvedená tabulka představuje různé kvantifikátory.

Regulární výrazPopis
X? X se vyskytuje jednou nebo vůbec
X + X se vyskytuje jednou nebo vícekrát
X * X se vyskytuje nula nebo vícekrát
X {n} X se vyskytuje pouze nkrát
X {n,} X se vyskytuje n nebo vícekrát
X a Z} X se vyskytuje nejméně ykrát, ale méně než zkrát

Příklad:

import java.util.regex. * public class Příklad {public static void main (String args []) {System.out.println ('? quantifier ....') // (a nebo y nebo z přijde jednou) System.out.println (Pattern.matches ('[ayz]?', 'A')) // výstup: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay a z přichází vícekrát) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a přichází vícekrát) Systém. out.println (Pattern.matches ('[ayz]?', 'amnta')) // výstup: false // (a nebo y nebo z musí přijít jednou) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // výstup: false System.out.println (' + kvantifikátor .... ') // (a nebo y nebo z jednou nebo vícekrát) System.out.println (vzor .matches ('[ayz] +', 'a')) // výstup: true // (a přichází vícekrát) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a nebo y nebo z přichází více než jednou) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // výstup: true // (z a t neodpovídají vzoru) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // výstup: false System.out.println ('* kvantifikátor ....') // (a nebo y nebo z mohou přijít nula nebo vícekrát ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // výstup: true}}

V zásadě bude hledat odpovídající kvantifikátor a bude odpovídat výsledku vyhledávání.

Regex metaznaky

Metaznaky regulárního výrazu fungují jako krátké kódy. Podívejme se na níže uvedenou tabulku, abychom pochopili různé typy metaznaků.

Regulární výrazPopis
. Může to být jakýkoli znak (může, ale nemusí se shodovat s terminátorem)
d Představuje jakékoli číslice, menší než [0-9]
D Představuje jakoukoli jinou číslici, zkratku pro [^ 0-9]
s Představuje jakoukoli mezeru, krátkou pro [tnx0Bfr]
S Může to být znak bez mezer, zkratka pro [^ s]
v Může to být slovní znak, zkratka pro [a-zA-Z_0-9]
V Představuje jakýkoli neslovný znak, zkratka pro [^ w]
b Představuje hranici slova
B Jedná se o neslovnou hranici

Příklad:

import java.util.regex. * veřejná třída MetacharExample {public static void main (String args []) {// d znamená číslici System.out.println ('metacharacter d ....') // (non-digit) System.out.println (Pattern.matches ('d', 'abc')) // Výstup: false // (číslice a přijde jednou) System.out.println (Pattern.matches ('d', '1')) ) // Výstup: true // (číslice, ale přichází více než jednou) System.out.println (Pattern.matches ('d', '4443')) // Výstup: false // (číslice a znak) System.out .println (Pattern.matches ('d', '323abc')) // Výstup: false // D znamená neciferný System.out.println ('metaznaky D ....') // (neciferný ale přichází více než jednou) System.out.println (Pattern.matches ('D', 'abc')) // Výstup: false // Je to Digit System.out.println (Pattern.matches ('D', '1 ')) // Výstup: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Výstup: false // (číslice a char) System.out.println (Pattern.matches (' D ',' 323abc ')) // Výstup: false // (neciferný a přichází jednou) System.out.println (Pattern.matches (' D ',' m ')) // Výstup: true System.out .pr intln ('metacharacter D with quantifier ....') // (non-digit and may come 0 or more times) System.out.println (Pattern.matches ('D *', 'abc')) // Output : skutečný } }

Na základě výše uvedených podmínek zobrazí výstup. Tak to funguje. Takže to bylo o různých typech Regulární výraz. Tímto se dostáváme na konec tohoto článku. Jádoufám, že vám to připadalo poučné. Pokud se chcete dozvědět více, můžete se podívat na naše také.

Podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Jsme tu, abychom vám pomohli s každým krokem na vaší cestě, abychom se kromě otázek týkajících se tohoto rozhovoru pro javu stali i učebním plánem, který je určen pro studenty a profesionály, kteří chtějí být vývojářem Java.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů v tomto článku „Java Regex“ a my se vám ozveme co nejdříve.