Java Regex

Java Regex

De Java Regex of Reguliere expressie is een API hiervoor definieer een patroon voor het zoeken of manipuleren van tekenreeksen .

Het wordt veel gebruikt om de beperking op strings zoals wachtwoord- en e-mailvalidatie te definiëren. Nadat u de Java Regex-tutorial heeft geleerd, kunt u uw reguliere expressies testen met de Java Regex Tester Tool.

Java Regex API biedt 1 interface en 3 klassen in java.util.regex pakket.



java.util.regex-pakket

De klassen Matcher en Pattern bieden de mogelijkheid tot reguliere Java-expressie. Het pakket java.util.regex biedt de volgende klassen en interfaces voor reguliere expressies.

  1. MatchResult-interface
  2. Matcher-klasse
  3. Patroon klasse
  4. PatternSyntaxException-klasse
Java Regex-API

Matcher-klasse

Het implementeert de MatchResultaat koppel. Het is een regex-motor die wordt gebruikt om matchbewerkingen uit te voeren op een tekenreeks.

Nee. Methode Beschrijving
1 Booleaanse overeenkomsten() testen of de reguliere expressie overeenkomt met het patroon.
2 Booleaanse vondst() vindt de volgende uitdrukking die overeenkomt met het patroon.
3 Booleaanse vondst(int start) vindt de volgende uitdrukking die overeenkomt met het patroon vanaf het opgegeven startnummer.
4 Tekenreeksgroep() retourneert de overeenkomende deelreeks.
5 int begin() retourneert de startindex van de overeenkomende deelreeks.
6 int einde() retourneert de eindindex van de overeenkomende deelreeks.
7 int groupCount() retourneert het totale getal van de overeenkomende deelreeks.

Patroon klasse

Het is de gecompileerde versie van een reguliere expressie . Het wordt gebruikt om een ​​patroon voor de regex-engine te definiëren.

Nee. Methode Beschrijving
1 statisch patroon compileren (String regex) compileert de gegeven regex en retourneert de instantie van het patroon.
2 Matcher-matcher (CharSequence-invoer) creëert een matcher die de gegeven invoer matcht met het patroon.
3 statische Booleaanse overeenkomsten (String regex, CharSequence-invoer) Het werkt als de combinatie van compileer- en matchermethoden. Het compileert de reguliere expressie en matcht de gegeven invoer met het patroon.
4 String[] split(CharSequence-invoer) splitst de gegeven invoerreeks rond overeenkomsten van een bepaald patroon.
5 Tekenreekspatroon() retourneert het regex-patroon.

Voorbeeld van reguliere Java-expressies

Er zijn drie manieren om het regex-voorbeeld in Java te schrijven.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }}  
Test het nu

Uitvoer

 true true true  

Reguliere expressie. Voorbeeld

De . (punt) vertegenwoordigt een enkel teken.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }}  
Test het nu

Regex-tekenklassen

Nee. Karakterklasse Beschrijving
1 [abc] a, b of c (eenvoudige klasse)
2 [^abc] Elk teken behalve a, b of c (negatie)
3 [a-zA-Z] a t/m z of A t/m Z, inclusief (bereik)
4 [a-d[m-p]] a tot en met d, of m tot en met p: [a-dm-p] (vereniging)
5 [a-z&&[def]] d, e of f (kruispunt)
6 [a-z&&[^bc]] a t/m z, behalve b en c: [ad-z] (aftrekken)
7 [a-z&&[^m-p]] a tot en met z, en niet m tot en met p: [a-lq-z](aftrekken)

Reguliere expressie Tekenklassen Voorbeeld

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }}  
Test het nu

Regex-kwantificatoren

De kwantoren specificeren het aantal keren dat een teken voorkomt.

Regex Beschrijving
X? X komt één keer of helemaal niet voor
X+ X komt één of meerdere keren voor
X* X komt nul of vaker voor
X{n} X komt slechts n keer voor
X{n,} X komt n of meer keren voor
X{y,z} X komt minstens y keer voor, maar minder dan z keer

Reguliere expressietekenklassen en kwantoren Voorbeeld

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }}  
Test het nu

Regex-metatekens

De metatekens voor reguliere expressies werken als shortcodes.

Regex Beschrijving
. Elk teken (kan wel of niet overeenkomen met terminator)
D Alle cijfers, behalve [0-9]
D Elk niet-cijferig, afkorting van [^0-9]
S Elk witruimteteken, een afkorting van [ x0Bf ]
S Elk teken dat geen witruimte bevat, een afkorting van [^s]
In Elk woordteken, afkorting van [a-zA-Z_0-9]
IN Elk niet-woordteken, een afkorting van [^w]
B Een woordgrens
B Een niet-woordgrens

Voorbeeld van metatekens voor reguliere expressies

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }}  
Test het nu

Reguliere expressie Vraag 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }}  

Test het nu

Reguliere expressievraag 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }}  
Test het nu

Voorbeeld van Java Regex Finder

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } }  

Uitgang:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30  

Top Artikelen

Categorie

Interessante Artikelen