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í:
- Co jsou regulární výrazy?
- Co je Java Regex?
- Matcher Class
- Třída vzoru
- Třída znaků regulárního výrazu
- Regex kvantifikátory
- Regex metaznaky
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ý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ýraz | Popis |
---|---|
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ýraz | Popis |
---|---|
. | 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.