logo

Java Regex

The Java Regex ili Regularni izraz je API za definirati obrazac za pretraživanje ili manipuliranje nizovima .

Široko se koristi za definiranje ograničenja nizova kao što su lozinka i provjera valjanosti e-pošte. Nakon što naučite vodič za Java regex, moći ćete testirati svoje regularne izraze pomoću alata za testiranje Java Regexa.

Java Regex API pruža 1 sučelje i 3 klase java.util.regex paket.

java.util.regex paket

Klase Matcher i Pattern pružaju mogućnost Java regularnog izraza. Paket java.util.regex pruža sljedeće klase i sučelja za regularne izraze.

  1. MatchResult sučelje
  2. Klasa podudaranja
  3. Klasa uzorka
  4. Klasa PatternSyntaxException
Java Regex API

Klasa podudaranja

Provodi se MatchResult sučelje. To je regex motor koji se koristi za izvođenje operacija podudaranja na nizu znakova.

Ne.metodaOpis
1Booleova podudaranja()testirati odgovara li regularni izraz uzorku.
2Boolean find()pronalazi sljedeći izraz koji odgovara uzorku.
3booleov pronalazak (int start)pronalazi sljedeći izraz koji odgovara uzorku iz zadanog početnog broja.
4Grupa nizova()vraća upareni podniz.
5int start()vraća početni indeks uparenog podniza.
6int end()vraća završni indeks uparenog podniza.
7int groupCount()vraća ukupan broj uparenog podniza.

Klasa uzorka

To je kompilirana verzija regularnog izraza . Koristi se za definiranje uzorka za regex mehanizam.

Ne.metodaOpis
1kompilacija statičkog uzorka (string regex)kompilira dati regularni izraz i vraća instancu uzorka.
2Podudaranje podudaranja (unos CharSequence)stvara podudaranje koje podudara zadani unos s uzorkom.
3statička Booleova podudaranja (String regex, CharSequence input)Djeluje kao kombinacija metoda prevođenja i uparivanja. Sastavlja regularni izraz i spaja zadani unos s uzorkom.
4Niz[] podijeljen (unos CharSequence)dijeli zadani ulazni niz oko podudaranja zadanog uzorka.
5Uzorak niza()vraća uzorak regularnog izraza.

Primjer Java regularnih izraza

Postoje tri načina za pisanje primjera regularnog izraza u Javi.

 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); }} 
Testirajte sada

Izlaz

 true true true 

Regularni izraz. Primjer

The . (točka) predstavlja jedan znak.

 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) }} 
Testirajte sada

Regex Klase znakova

Ne.Klasa znakovaOpis
1[abc]a, b ili c (jednostavna klasa)
2[^abc]Bilo koji znak osim a, b ili c (negacija)
3[a-zA-Z]od a do z ili od A do Z, uključujući (raspon)
4[a-d[m-p]]a do d ili m do p: [a-dm-p] (unija)
5[a-z&&[def]]d, e ili f (raskrižje)
6[a-z&&[^bc]]a do z, osim za b i c: [ad-z] (oduzimanje)
7[a-z&&[^m-p]]a do z, a ne od m do p: [a-lq-z](oduzimanje)

Primjer klasa znakova regularnog izraza

 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) }} 
Testirajte sada

Regex kvantifikatori

Kvantifikatori određuju broj pojavljivanja znaka.

RegexOpis
X?X se pojavljuje jednom ili se ne pojavljuje uopće
X+X se pojavljuje jednom ili više puta
X*X se pojavljuje nula ili više puta
X{n}X se pojavljuje samo n puta
X{n,}X se pojavljuje n ili više puta
X{y,z}X se pojavljuje najmanje y puta, ali manje od z puta

Primjer klasa znakova regularnog izraza i kvantifikatora

 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) }} 
Testirajte sada

Regex metakarakteri

Metaznakovi regularnog izraza rade kao kratki kodovi.

RegexOpis
.Bilo koji znak (može i ne mora odgovarati terminatoru)
dBilo koje znamenke, osim [0-9]
DSve što nije znamenka, skraćenica za [^0-9]
sBilo koji razmak, skraćenica za [ x0Bf ]
SBilo koji znak koji nije razmak, skraćenica za [^s]
UBilo koji znak riječi, skraćenica za [a-zA-Z_0-9]
UBilo koji znak koji nije riječ, skraćenica za [^w]
Granica riječi
BGranica bez riječi

Primjer metaznakova regularnog izraza

 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) }} 
Testirajte sada

Pitanje regularnog izraza 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) }} 

Testirajte sada

Pitanje regularnog izraza 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) }} 
Testirajte sada

Primjer Java Regex Findera

 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.'); } } } } 

Izlaz:

 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