logo

Reguljära uttryck i Java

I Java är Regular Expressions eller Regex (kort sagt) i Java ett API för att definiera strängmönster som kan användas för att söka, manipulera och redigera en sträng i Java. E-postvalidering och lösenord är några områden av strängar där Regex används i stor utsträckning för att definiera begränsningarna. Reguljära uttryck i Java tillhandahålls under java.util.regex paket. Detta består av 3 klasser och 1 gränssnitt . De java.util.regex Paketet består huvudsakligen av följande tre klasser som visas nedan i tabellformat enligt följande:

Regex-klasser och gränssnitt

Regex i Java tillhandahåller 3 klasser och 1 gränssnitt som är följande:



  1. Mönsterklass
  2. Matcherklass
  3. PatternSyntaxException Class
  4. MatchResult Interface

Mer förståelse kan tolkas från bilden nedan enligt följande:

Ja Nej. Klass/gränssnitt Beskrivning
1. Mönsterklass Används för att definiera mönster
2. Matcherklass Används för att utföra matchningsoperationer på text med hjälp av mönster
3. PatternSyntaxException Class Används för att indikera syntaxfel i ett reguljärt uttrycksmönster
4. MatchResult Interface Används för att representera resultatet av en matchningsoperation

Mönsterklass

Den här klassen är en sammanställning av reguljära uttryck som kan användas för att definiera olika typer av mönster, utan att tillhandahålla några offentliga konstruktörer. Detta kan skapas genom att anropa metoden compile() som accepterar ett reguljärt uttryck som det första argumentet, och därmed returnerar ett mönster efter exekvering.



Ja Nej. Metod Beskrivning
1. kompilera (Regex String) Det används för att kompilera det givna reguljära uttrycket till ett mönster.
2. kompilera (String regex, int flaggor) Den används för att kompilera det givna reguljära uttrycket till ett mönster med de givna flaggorna.
3. flaggor() Den används för att returnera detta mönsters matchflaggor.
4. matcher(CharSequence-ingång) Den används för att skapa en matchare som matchar den givna inmatningen mot detta mönster.
5. matchar (String regex, CharSequence input) Den används för att kompilera det givna reguljära uttrycket och försöker matcha den givna inmatningen mot den.
6. mönster() Det används för att returnera det reguljära uttrycket från vilket mönstret kompilerades.
7. citat (sträng s) Den används för att returnera en bokstavlig mönstersträng för den angivna strängen.
8. split(CharSequence-ingång) Den används för att dela den givna inmatningssekvensen runt matchningar av detta mönster.
9. split (CharSequence input, int limit) Den används för att dela den givna inmatningssekvensen runt matchningar av detta mönster. Limitparametern styr hur många gånger mönstret appliceras.
10. att stränga() Den används för att returnera strängrepresentationen av detta mönster.

Exempel: Mönsterklass

Java






// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }>

>

>

Produktion

true false>

Matcherklass

Det här objektet används för att utföra matchningsoperationer för en inmatningssträng i Java, och därmed tolka de tidigare förklarade mönstren. Inte heller detta definierar några offentliga konstruktörer. Detta kan implementeras genom att anropa en matcher() på vilket mönsterobjekt som helst.

Ja Nej. Metod Beskrivning
1. hitta() Det används främst för att söka efter flera förekomster av reguljära uttryck i texten.
2. hitta (int start) Den används för att söka förekomster av reguljära uttryck i texten med utgångspunkt från det givna indexet.
3. Start() Den används för att få startindexet för en matchning som hittas med metoden find().
4. slutet() Det används för att få slutindexet för en matchning som hittas med metoden find(). Den returnerar tecknets index bredvid det sista matchande tecknet.
5. groupCount() Den används för att hitta det totala antalet av den matchade undersekvensen.
6. grupp() Den används för att hitta den matchade undersekvensen.
7. tändstickor() Det används för att testa om det reguljära uttrycket matchar mönstret.

Notera: T Pattern.matches() kontrollerar om hela texten matchar ett mönster eller inte. Andra metoder (visas nedan) används främst för att hitta flera förekomster av mönster i texten.

Låt oss diskutera några exempel på program som vi gjorde för mönsterklassen. Här kommer vi att diskutera några Java-program som visar hur compile(), find(), start(), end() och split() fungerar för att få en bättre förståelse av Matcher-klassen.

Exempel 1: Mönstersökning

Java




// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com>

Beskrivning

[xyz]

x, y eller z

[^xyz]

Alla andra tecken än x, y eller z

[a-zA-Z]

tecken från intervallet a till z eller A till Ö.

[a-f[m-t]]

Förening av a till f och m till t.

[a-z && p-y]

Alla intervall av element skär mellan två intervall

[a-z && [^bc]]

a till z förening med utom b och c

[a-z && [^m-p]]

a till z förening med utom intervall m till p

Nedan är implementeringen av ovanstående ämne:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }>

>

java lista över

>

Produktion

true false>

Regex Metatecken

Regex

Beskrivning

X?

X visas en gång eller inte

X+

X visas en eller flera gånger

X*

X visas noll eller inte en gång

X{n}

X visas n gånger

X{n,}

X visas n gånger eller mer än n

X{n,m}

X visas större än lika med n gånger och mindre än m gånger.

Nedan är implementeringen av Regex Metacharacters:

Java




// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }>

>

>

Produktion

false true false true>

Exempel på Java Regex Finder

Regex

Beskrivning

.

Vilken karaktär som helst

d

Alla siffror, [0-9]

D

Alla icke-siffriga, [^0-9]

s

Blanksteg, [ x0Bf ]

S

Icke-blanksteg, [^s]

I

Ordtecken, [a-zA-Z_0-9]

I

Icke-ord tecken, [^w]



Ordgräns

B

Icke-ordgräns

Nedan är implementeringen av Java Regex Finder:

Java




// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

Produktion

true false true true>

Slutsats

Låt oss slutligen diskutera några av de viktiga observationerna som hämtats från ovanstående artikel

  1. Vi skapar ett mönsterobjekt genom att anropa Pattern.compile(), det finns ingen konstruktor. compile() är en statisk metod i Pattern-klassen.
  2. Som ovan skapar vi ett Matcher-objekt med hjälp av matcher() på objekt i klassen Pattern.
  3. Pattern.matches() är också en statisk metod som används för att kontrollera om en given text som helhet matchar mönstret eller inte.
  4. find() används för att hitta flera förekomster av mönster i texten.
  5. Vi kan dela upp en text baserat på ett avgränsningsmönster med metoden split().

Vanliga frågor i Java Regex

Q1. Vad är reguljära uttryck i Java?

År:

Reguljära uttryck i java används för strängmönster som kan användas för att söka, manipulera och redigera en sträng i Java.

Q2. Vad är ett enkelt exempel på reguljärt uttryck i Java?

År:

Ett enkelt exempel på ett reguljärt uttryck i java nämns nedan:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

Produktion

true true true>