Čo sú regulárne výrazy v jazyku Java?
V jazyku Java je Regex alebo Regulárny výraz aplikačným programovým rozhraním, ktoré pomáha pri definovaní vzoru za účelom vyhľadávania, manipulácie a úpravy reťazcov. Regulárne výrazy Java sa široko používajú pri overovaní hesiel a e-mailov. Tieto výrazy poskytuje balík java.util.regex a skladá sa z 1 rozhrania a 3 tried.
Tieto tri triedy sú:
- Vzor: Pomáha pri definovaní vzorov.
- Matcher: Použitie vzorov, pomáha pri vykonávaní zápasu.
- PatternSyntaxException: Pomáha pri označení chyby syntaxe.
Java Regex má jedno rozhranie známe ako MatchResultInterface, ktoré pomáha pri určovaní výsledku operácie zhody regulárneho výrazu.
Syntax regulárneho výrazu v Jave
Teraz sa pozrime, ako napísať regulárny výraz v jazyku Java pomocou programu.
kód:
//Java program to demonstrate regular expressions
import java.util.regex.*;
public class RegExamples (
public static void main(String args())(
String A = " Happiness is " + " within yourself";
String B = ".*within.*";
// checks whether the string A contains the word 'within' and stores the result in matchcheck
boolean matchcheck = Pattern.matches(B, A);
//prints the result
System.out.println("Is there any string 'within' in the text ? \n " + matchcheck);
) )
Výkon:
Bežne používané metódy v regulárnych výrazoch
V regulárnych výrazoch existujú 3 bežne používané metódy. Oni sú,
1. Metódy indexu
Metódy indexu ponúkajú hodnoty indexu, ktoré pomáhajú presne ukazovať, kde sa našla zhoda v reťazci zadanom ako vstup.
metóda | popis |
štart () | Vráti sa počiatočný index predchádzajúcej zhody. |
začiatok (int skupina) | Vzhľadom na predchádzajúcu zhodu operácie subsekvencie je zachytená a vrátená. |
koniec() | Ofset po zhode s posledným znakom je vrátený. |
Koniec (int skupina) | Vzhľadom na predchádzajúcu zhodu operácie subsekvencie je zachytená a posunutá po zhode jej posledného vráteného znaku. |
2. Študijné metódy
Študijné metódy skontrolujú reťazec zadaný ako vstup a vráti sa booleovská hodnota označujúca, či sa vzor našiel alebo nie.
metóda | popis |
pozerajúc sa na() | Priraďte sekvenciu zadanú ako vstup k vzorke od začiatku oblasti. |
Nájsť() | Nájde ďalšiu subsekvenciu sekvencie zadanej ako vstup oproti vzoru od začiatku oblasti. |
nájsť (int start) | Vynuluje zápas a potom nájde ďalšiu subsekvenciu sekvencie zadanej ako vstup oproti vzoru zo zadaného indexu. |
zápasy() | Zhoduje obsah so vzorom. |
3. Metódy výmeny
Metódy, ktoré sa používajú na nahradenie textu v reťazci.
metóda | popis |
appendReplacement (StringBuffer s, Náhrada reťazca) | Bude uskutočnený krok bez pripojenia a výmeny. |
appendTail (StringBuffer s) | Bude vykonaný krok pripojenia a výmeny terminálu. |
nahradiť všetko (nahradiť reťazec) | Nahraďte všetky subsekvencie postupnosti zadané ako vstup, ktoré sa zhodujú so vzorkou, náhradným reťazcom. |
citátReplacement (String s) | Za uvedený reťazec bude vrátený doslovný náhradný reťazec. |
ReplaFirst (String náhradné) | Nahraďte prvú subsekvenciu sekvencie zadanej ako vstup, ktorá sa zhoduje so vzorkou, náhradným reťazcom. |
Ako definovať regulárny výraz v Jave?
Existuje niekoľko spôsobov, ako je možné definovať regulárny výraz. Oni sú:
1. Literály
Predpokladajme, že reťazec „hai“ sa musí vyhľadať v texte „hai“. Dá sa to urobiť pomocou syntaxe.
Pattern.matches("hai", "hai")
2. Triedy znakov
Zhoduje sa s každým jednotlivým znakom v texte zadaným s viacerými povolenými znakmi v triede znakov. Nasledujú rôzne konštrukty triedy.
Trieda znakov | vysvetlenie |
(PQR) | Zhoduje sa s textom, ak obsahuje p, q alebo r a mal by byť iba raz. |
(PQR) | označuje negáciu, a preto sa tu berú jednotlivé znaky s výnimkou písmen p, q alebo r. |
(A-zA-Z) | a až z a A až Z. |
(Ad (ps)) | a až d alebo p až s. |
(A-dm-p) | Spojenie oboch rozsahov. |
(Az && (PQR)) | a až z a (p, q alebo r). |
(Az && (pq)) | a až z a tiež p, q sa nezohľadňujú. |
(Ad-z) | Vykoná odpočítanie. |
(Az && (mp)) | a až z a nie m až p. |
3. Metaznaky
Metaznaky sa v regulárnom výraze správajú ako krátke kódy. Nasleduje niekoľko bežne používaných metaznakov.
Regulárny výraz | vysvetlenie |
\ d | Akákoľvek číslica od 0 do 9. Môže byť tiež zapísaná ako (0-9). |
\ D | Akákoľvek číslica od 0 do 9. Môže byť tiež zapísaná ako (0-9). |
\ s | Znak medzery alebo (\ t \ n \ x0B \ f \ r). |
\ S | Znak bez medzier alebo znakov (\ s). |
\ w | Znak slova alebo (a-zA-Z_0-9). |
\ W | Neslovný znak alebo (\ w). |
\ b | Hranica slova. |
\ B | Bezslovná hranica. |
4. Kvantifikátory
Kvantifikátory uvádzajú počet výskytov každého znaku, ktorý sa má zhodovať s reťazcom.
Regulárny výraz | vysvetlenie |
znak? | Vyskytuje sa raz alebo vôbec. |
A * | A nastane 0 alebo viackrát. |
A + | A nastane 1 alebo viackrát. |
A (n) | A nastane presne n krát. |
A (n) | A sa vyskytuje n alebo viac ako to. |
A (n, m) | A sa vyskytuje najmenej n-krát, ale nemalo by byť viac ako m-krát. |
Ako vytvoriť regulárny výraz v Jave?
Teraz sa pozrime na program java s vyššie uvedenými regulárnymi výrazmi.
kód:
//Java program to demonstrate regular expressions
import java.util.regex.*;
public class RegExamples (
public static void main(String args())(
String str="hai";
// Returns true if string 1 matches string 2
System.out.println("Returns true if 'hai' matches 'Hai' :"+
Pattern.matches(str, "Hai")); //False
//Returns true if Hai or hai matches parameter 2
System.out.println("Returns true if 'Hai' or 'hai' matches 'Hai' : "+
Pattern.matches("(Hh)ai", "Hai")); //True
// Returns true if the string matches exactly "ann" or "Ann" or "jak" or "Jak"
System.out.println("Returns true if the string matches exactly 'ann' or 'Ann' or 'jak' or 'Jak' with 'Ann' : "+
Pattern.matches("(aA)nn|(jJ)ak", "Ann"));//True
//returns true if the string contains "with" at any place in the string
System.out.println("returns true if the string contains 'with' in the string 'within' : " +
Pattern.matches(".*with.*", "within"));//True
// returns true if the '9448anna' does not have number in the beginning
System.out.println( "returns true if the '9448anna' does not have number in the beginning : "+
Pattern.matches("^(^\\d).*", "9448anna")); //False
System.out.println("returns true if the '9448anna' does not have number in the beginning : " +
Pattern.matches("^(^\\d).*", "anna9448")); //True
)
)
Výkon:
záver
Regulárne výrazy Java sa široko používajú pre aplikácie v reálnom čase, ako je napríklad overenie hesla a e-mailu. Tieto výrazy sú rozhrania API, ktoré definujú vzory a ponúkajú vyhľadávanie, úpravy a niekoľko ďalších operácií v reťazci.
Odporúčané články
Toto je príručka pre regulárne výrazy v Jave. Tu diskutujeme o tom, ako vytvoriť, ako definovať a bežne používané metódy regulárnych výrazov v jave. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- Top 3 najlepšie kompilátory v Jave
- Regulárne výrazy v JavaScripte - vlastnosti a metódy
- Vývoj aplikácií Java
- Metódy poľa v Java s príkladmi
- Funkcie regulárnych výrazov v Pythone (príklad)