Java Regex - Wat zijn reguliere expressies en hoe deze te gebruiken?



De Java Regex is een API die wordt gebruikt om een ​​patroon te definiëren voor het zoeken of manipuleren van strings. In dit artikel wordt ook ingegaan op verschillende klassen van reguliere expressies die door Java worden geleverd.

Gegevensextractie of validatie is een belangrijk aspect van elke programmeertaal. Een van de meest populaire manieren voor gegevensvalidatie is het gebruik van reguliere expressies. gebruikt dezereguliere expressies om een ​​patroon van karakters te beschrijven. Dit artikel over Java Regex zal de verschillende methoden voor het gebruik van uitdrukkingen in de volgende volgorde opsommen:

Laten we beginnen!





Wat zijn reguliere expressies?

NAAR Reguliere expressie is een reeks tekens die een zoekpatroon vormen. Wanneer u naar gegevens in een tekst zoekt, kunt u dit zoekpatroon gebruiken om te beschrijven waarnaar u op zoek bent.

wat doet .format in python

Reguliere expressies - Java Regex - Edureka



Een reguliere expressie kan een enkel teken of een ingewikkelder patroon. Het kan worden gebruikt voor elk type tekstzoekopdracht en tekstvervanging. Een Regex-patroon bestaat uit eenvoudige tekens, zoals / abc / , of een combinatie van eenvoudige en speciale tekens, zoals /abc/ of /voorbeeld(d+).d*/ .

Wat is Java Regex?

De Java Regex is een API die gewend is definieer een patroon voor zoeken of manipuleren . Het wordt veel gebruikt om de beperking op strings te definiëren, zoals wachtwoord- en e-mailvalidatie.

Er zijn verschillende methoden om Java Regex te gebruiken. Laten we dus verder gaan en de verschillende uitdrukkingen eens bekijken.



Matcher-klasse

Deze klasse wordt gebruikt om overeenkomstbewerkingen uit te voeren op een tekenreeks. De onderstaande tabel geeft verschillende methoden van de Matcher-klasse weer.

Methode Omschrijving
booleaanse overeenkomsten () Test of de opgegeven reguliere expressie overeenkomt met het patroon
booleaanse vind () Wordt gebruikt om de volgende uitdrukking te vinden die overeenkomt met het patroon
boolean find (int start) Zoekt de volgende uitdrukking die overeenkomt met het patroon van het opgegeven startnummer
String groep () Wordt gebruikt om de overeenkomende subreeks te retourneren
int start () Retourneert de startindex van de overeenkomende subreeks
int einde () Retourneert de eindindex van de overeenkomende subreeks
int groupCount () Retourneert het totale aantal overeenkomende subreeksen

Patroon klasse

Pattern Class is een gecompileerde versie van reguliere expressie die wordt gebruikt om het patroon voor regex-engine te definiëren.

Methode Omschrijving
statisch patroon compileren (String regex) Het compileert de opgegeven regex en retourneert de instantie van het patroon
Komt overeen met overeenkomsten (CharSequence-invoer) Het wordt gebruikt om een ​​matcher te maken die overeenkomt met de gegeven invoer met het patroon
statische booleaanse overeenkomsten (String-regex, CharSequence-invoer) Het werkt als een combinatie van compileer- en matchermethoden. Het compileert de reguliere expressie en koppelt de gegeven invoer aan het patroon
String [] split (CharSequence-invoer) Wordt gebruikt om de gegeven invoerstring te splitsen rond overeenkomsten van een bepaald patroon
String patroon () Helpt het regex-patroon terug te geven

Laten we nu een klein voorbeeld nemen om te begrijpen hoe u een reguliere expressie schrijft.

import java.util.regex. * public class Regexample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String komt overeen met de opgegeven Regex - + matcher.matches ())}}

In dit geval gebruikt het intern Pattern en Matcher regex-klassen om de verwerking uit te voeren, maar uiteraardhet vermindert de coderegels. De patroonklasse bevat ook een overeenkomstmethode die regex en invoerreeks als argument neemt en een booleaans resultaat retourneert nadat ze zijn vergeleken. Dus de code werkt prima voor het matchen van invoer met een reguliere expressie in Java. Daarom zal de uitvoer waar zijn, zoals hieronder wordt weergegeven.

Uitgang:
waar

Laten we nu nog een paar categorieën van reguliere Java-expressies bekijken.

Regex-tekenklasse

Onderstaande tabel geeft de verschillende tekenklassencombinaties weer.

KarakterklasseOmschrijving
[abc] a, b of c (eenvoudige klasse)
[^ abc] Elk teken behalve a, b of c (negatie)
[a-zA-Z] a t / m z of A t / m Z, inclusief (bereik)
[a-d [m-p]] a tot en met d, of m tot en met p: [a-dm-p] (vereniging)
[a-z && [def]] d, e of f (kruispunt)
[a-z && [^ bc]] a tot en met z, behalve voor b en c: [ad-z] (aftrekken)
[a-z && [^ m-p]] a tot z, en niet m tot p: [a-lq-z] (aftrekken)

Voorbeeld:

import java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (niet x of y of z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (tussen x of y of z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x en y komen meer dan eens voor) Systeem .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex kwantoren

De kwantoren specificeren het aantal keren dat een teken voorkomt. Onderstaande tabel geeft verschillende kwantoren weer.

wat is data science?
RegexOmschrijving
X? X komt een keer of helemaal niet voor
X + X komt een of meerdere keren voor
X * X komt nul of meer keer voor
X {n} X komt slechts n keer voor
X {n,} X komt n of vaker voor
X en Z} X komt minstens y keer voor, maar minder dan z keer

Voorbeeld:

import java.util.regex. * public class Voorbeeld {public static void main (String args []) {System.out.println ('? quantifier ....') // (a of y of z komt een keer) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay en z komen meer dan één keer) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a komt meer dan één keer) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a of y of z moet een keer komen) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a of y of z een of meerdere keren) System.out.println (Pattern .matches ('[ayz] +', 'a')) // output: true // (een komt meer dan één keer) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a of y of z komt meer dan eens) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z en t komen niet overeen met patroon) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a of y of z kan nul of meer keer komen ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

In principe zoekt het naar de overeenkomende kwantor en komt het overeen met het zoekresultaat.

Regex-metatekens

De metatekens van de reguliere expressie werken als shortcodes. Laten we de onderstaande tabel eens bekijken om verschillende soorten metatekens te begrijpen.

hoe u een Java-programma beëindigt
RegexOmschrijving
. Het kan elk teken zijn (kan wel of niet overeenkomen met de terminator)
d Staat voor alle cijfers, kort van [0-9]
D Staat voor elk niet-cijferig, afkorting van [^ 0-9]
s Vertegenwoordigt elk witruimteteken, een afkorting van [tnx0Bfr]
S Het mag een niet-witruimte-teken zijn, een afkorting van [^ s]
in Het kan een woordteken zijn, een afkorting van [a-zA-Z_0-9]
IN Staat voor elk niet-woordteken, een afkorting van [^ w]
b Vertegenwoordigt een woordgrens
B. Het is een niet-woordgrens

Voorbeeld:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d betekent cijfer System.out.println ('metatekens d ....') // (niet-cijferig) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (cijfer en komt één keer) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (cijfer maar komt meer dan eens) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (cijfer en teken) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D betekent niet-cijferige System.out.println ('metatekens D ....') // (niet-cijferige maar komt meer dan eens) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Het is een cijfer System.out.println (Pattern.matches ('D', '1 ')) // Output: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (cijfer en teken) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (geen cijfer en komt een keer) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metatekens D met kwantor ....') // (niet-cijferig en kan 0 of meer keer voorkomen) System.out.println (Pattern.matches ('D *', 'abc')) // Output : true}}

Op basis van de bovengenoemde voorwaarden zal het de output weergeven. Zo werkt dat. Dus dat ging allemaal over verschillende soorten Regex. Hiermee komen we aan het einde van dit artikel. ikik hoop dat je het informatief vond. Als u meer wilt weten, kunt u onze ook.

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. We zijn hier om je te helpen bij elke stap op je reis, om naast deze Java-interviewvragen ook een curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van dit 'Java Regex' -artikel en we nemen zo snel mogelijk contact met u op.