Java Regex - Τι είναι οι κανονικές εκφράσεις και πώς να το χρησιμοποιήσετε;

Το Java Regex είναι ένα API που χρησιμοποιείται για τον καθορισμό ενός μοτίβου για αναζήτηση ή χειρισμό συμβολοσειρών. Αυτό το άρθρο θα μιλήσει επίσης για διάφορες κατηγορίες Κανονικών Εκφράσεων που παρέχονται από την Java.

Η εξαγωγή δεδομένων ή η επικύρωση είναι μια σημαντική πτυχή κάθε γλώσσας προγραμματισμού. Ένας από τους πιο δημοφιλείς τρόπους επικύρωσης δεδομένων είναι με τη χρήση κανονικών εκφράσεων. τα χρησιμοποιείκανονικές εκφράσεις για να περιγράψουν ένα μοτίβο χαρακτήρων. Αυτό το άρθρο στις Java Regex θα απαριθμήσει τις διάφορες μεθόδους χρήσης εκφράσεων με την ακόλουθη σειρά:



Ας αρχίσουμε!



Τι είναι οι τυπικές εκφράσεις;

ΠΡΟΣ ΤΟ Κοινή έκφραση είναι μια ακολουθία χαρακτήρων που δημιουργεί ένα μοτίβο αναζήτησης. Όταν αναζητάτε δεδομένα σε ένα κείμενο, μπορείτε να χρησιμοποιήσετε αυτό το μοτίβο αναζήτησης για να περιγράψετε αυτό που ψάχνετε.

Κανονικές εκφράσεις - Java Regex - Edureka



Μια κανονική έκφραση μπορεί να είναι μεμονωμένο χαρακτήρα ή πιο περίπλοκο μοτίβο. Μπορεί να χρησιμοποιηθεί για οποιονδήποτε τύπο αναζήτησης κειμένου και λειτουργιών αντικατάστασης κειμένου. Ένα μοτίβο Regex αποτελείται από απλούς χαρακτήρες, όπως / abc / ή ένας συνδυασμός απλών και ειδικών χαρακτήρων, όπως /αλφάβητο/ ή /example(d+).d*/ .

πώς να μετατρέψετε το δυαδικό σε δεκαδικό σε Java

Τι είναι το Java Regex;

ο Java Regex είναι ένα API που είναι συνηθισμένο ορίστε ένα μοτίβο για αναζήτηση ή χειρισμό . Χρησιμοποιείται ευρέως για τον καθορισμό του περιορισμού στις συμβολοσειρές, όπως η επικύρωση κωδικού πρόσβασης και email.

Υπάρχουν διαφορετικές μέθοδοι χρήσης του Java Regex. Ας προχωρήσουμε λοιπόν και ρίξτε μια ματιά στις διαφορετικές εκφράσεις.



Κατηγορία Matcher

Αυτή η τάξη χρησιμοποιείται για την εκτέλεση λειτουργιών αντιστοίχισης σε μια ακολουθία χαρακτήρων. Ο παρακάτω πίνακας αντιπροσωπεύει διάφορες μεθόδους της κατηγορίας Matcher.

Μέθοδος Περιγραφή
boolean αγώνες () Ελέγχει εάν η δεδομένη κανονική έκφραση ταιριάζει με το μοτίβο
boolean εύρεση () Χρησιμοποιείται για την εύρεση της επόμενης έκφρασης που ταιριάζει με το μοτίβο
boolean εύρεση (int start) Αναζητά την επόμενη έκφραση που ταιριάζει με το μοτίβο από τον δεδομένο αριθμό έναρξης
Ομάδα συμβολοσειρών () Χρησιμοποιήθηκε για να επιστρέψει την αντιστοιχισμένη ακολουθία
εκκίνηση () Επιστρέφει τον αρχικό δείκτη της αντιστοιχισμένης ακολουθίας
int end () Επιστρέφει τον τελικό δείκτη της αντιστοιχισμένης ακολουθίας
int groupCount () Επιστρέφει τον συνολικό αριθμό της αντιστοιχισμένης ακολουθίας

Κατηγορία προτύπων

Το Pattern Class είναι μια μεταγλωττισμένη έκδοση της κανονικής έκφρασης που χρησιμοποιείται για τον καθορισμό του μοτίβου για regex engine.

Μέθοδος Περιγραφή
μεταγλώττιση στατικού μοτίβου (String regex) Συγκεντρώνει το δεδομένο regex και επιστρέφει την παρουσία του Pattern
Αγώνες αγώνων (εισαγωγή CharSequence) Χρησιμοποιείται για τη δημιουργία ενός ταιριαστή που ταιριάζει με τη δεδομένη είσοδο με το μοτίβο
στατικοί boolean αγώνες (String regex, CharSequence input) Λειτουργεί ως συνδυασμός μεθόδων μεταγλώττισης και αντιστοίχισης. Συγκεντρώνει την κανονική έκφραση και ταιριάζει με τη δεδομένη είσοδο με το μοτίβο
Διαχωρισμός συμβολοσειράς [] (είσοδος CharSequence) Χρησιμοποιείται για τον διαχωρισμό της δεδομένης συμβολοσειράς εισόδου γύρω από αγώνες ενός δεδομένου μοτίβου
Σχέδιο συμβολοσειράς () Βοηθά στην επιστροφή του μοτίβου regex

Ας πάρουμε ένα μικρό παράδειγμα για να καταλάβουμε πώς να γράψετε μια κανονική έκφραση.

import java.util.regex. * δημόσια τάξη RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('Η συμβολοσειρά ταιριάζει με το δεδομένο Regex - + matcher.matches ())}}

Σε αυτήν την περίπτωση, εσωτερικά χρησιμοποιεί Pattern και Matcher τάξεις regex για να κάνουν την επεξεργασία αλλά προφανώς,μειώνει τις γραμμές κώδικα. Η κλάση προτύπων περιέχει επίσης τη μέθοδο αντιστοίχισης που παίρνει το regex και εισάγει τη συμβολοσειρά ως όρισμα και επιστρέφει ένα δυαδικό αποτέλεσμα αφού ταιριάζει. Έτσι, ο κώδικας λειτουργεί καλά για την αντιστοίχιση εισόδου με μια τυπική έκφραση σε Java. Ως εκ τούτου, η έξοδος θα είναι αληθινή όπως φαίνεται παρακάτω.

Παραγωγή:
αληθής

Τώρα ας δούμε μερικές ακόμη κατηγορίες Java Regular Expressions.

Κατηγορία χαρακτήρων Regex

Ο παρακάτω πίνακας αντιπροσωπεύει τον διαφορετικό συνδυασμό κατηγορίας χαρακτήρων.

Κατηγορία χαρακτήρωνΠεριγραφή
[αλφάβητο] a, b ή c (απλή κλάση)
[^ abc] Οποιοσδήποτε χαρακτήρας εκτός από a, b ή c (άρνηση)
[α-ζΑ-Ζ] a έως z ή A έως Z, συμπεριλαμβανομένων (εύρος)
[α-δ [m-p]] a έως d, ή m έως p: [a-dm-p] (ένωση)
[a-z && [def]] d, e ή f (διασταύρωση)
[a-z && [^ bc]] a έως z, εκτός από τα b και c: [ad-z] (αφαίρεση)
[a-z && [^ m-p]] a έως z, και όχι m έως p: [a-lq-z] (αφαίρεση)

Παράδειγμα:

εισαγωγή java.util.regex. * δημόσιος χαρακτήρας CharacterExample {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (μεταξύ x ή y ή z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x και y έρχεται περισσότερες από μία φορές) Σύστημα .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}}

Ποσοτικοί προσδιοριστές Regex

Οι ποσοτικοί προσδιοριστές καθορίζουν τον αριθμό των εμφανίσεων ενός χαρακτήρα. Ο παρακάτω πίνακας αντιπροσωπεύει διάφορους ποσοτικούς προσδιοριστές.

πώς να χρησιμοποιήσετε τον επαναληπτή στην Java
ΡετζέξΠεριγραφή
Χ? Το Χ εμφανίζεται μία ή καθόλου
Χ + Το Χ εμφανίζεται μία ή περισσότερες φορές
Χ * Το X εμφανίζεται μηδέν ή περισσότερες φορές
Χ {n} Το Χ εμφανίζεται μόνο n φορές
Χ {ν,} Το Χ εμφανίζεται n ή περισσότερες φορές
X και Z} Το Χ εμφανίζεται τουλάχιστον y φορές αλλά λιγότερο από z φορές

Παράδειγμα:

import java.util.regex. * public class Παράδειγμα {public static void main (String args []) {System.out.println ('? quantifier ....') // (a ή y ή z έρχεται μία φορά) System.out.println (Pattern.matches ('[ayz]?', 'A')) // έξοδος: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay και z έρχεται περισσότερες από μία φορές) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // έξοδος: false // (a έρχεται περισσότερες από μία φορές) Σύστημα. out.println (Pattern.matches ('[ayz]?', 'amnta')) // έξοδος: false // (a ή y ή z πρέπει να έρθει μία φορά) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // έξοδος: false System.out.println (' + quantifier .... ') // (a ή y ή z μία ή περισσότερες φορές) System.out.println (Μοτίβο .matches ('[ayz] +', 'a')) // έξοδος: true // (a έρχεται περισσότερες από μία φορές) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a ή y ή z έρχεται περισσότερες από μία φορές) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // έξοδος: true // (z και t δεν ταιριάζουν μοτίβο) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // έξοδος: false System.out.println ('* quantifier ....') // (a ή y ή z μπορεί να είναι μηδέν ή περισσότερες φορές ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // έξοδος: true}}

Βασικά, θα αναζητήσει τον αντίστοιχο μετρητή και ταιριάζει με το αποτέλεσμα αναζήτησης.

Μετασχηματιστές Regex

Οι μεταχαρακτήρες κανονικής έκφρασης λειτουργούν ως συντομεύσεις. Ας ρίξουμε μια ματιά στον παρακάτω πίνακα για να κατανοήσουμε διάφορους τύπους μεταχαρακτήρων.

ΡετζέξΠεριγραφή
. Μπορεί να είναι οποιοσδήποτε χαρακτήρας (μπορεί ή δεν ταιριάζει με τον τερματιστή)
ρε Αντιπροσωπεύει τυχόν ψηφία, μικρότερα από [0-9]
ρε Αντιπροσωπεύει οποιοδήποτε μη ψηφίο, συντομότερο για [^ 0-9]
μικρό Αντιπροσωπεύει οποιονδήποτε χαρακτήρα κενό διάστημα, συντομογραφία για [tnx0Bfr]
μικρό Μπορεί να είναι χαρακτήρας χωρίς κενό διάστημα, συντομογραφία για [^ s]
σε Μπορεί να είναι χαρακτήρας λέξης, συντομογραφία για [a-zA-Z_0-9]
ΣΕ Αντιπροσωπεύει οποιονδήποτε μη λεκτικό χαρακτήρα, συντομότερο για [^ w]
σι Αντιπροσωπεύει ένα όριο λέξης
σι Είναι ένα μη λεκτικό όριο

Παράδειγμα:

import java.util.regex. * δημόσια κλάση Metachar Παράδειγμα {public static void main (String args []) {// d σημαίνει digit System.out.println ('metacharacters d ....') // (non-digit) System.out.println (Pattern.matches ('d', 'abc')) // Έξοδος: false // (ψηφίο και έρχεται μία φορά) System.out.println (Pattern.matches ('d', '1') Έξοδος: true // (ψηφίο αλλά έρχεται περισσότερες από μία φορές) System.out.println (Pattern.matches ('d', '4443')) // Έξοδος: false // (ψηφίο και char) System.out .println (Pattern.matches ('d', '323abc')) // Έξοδος: false // D σημαίνει μη ψηφία System.out.println ('metacharacters D ....') // (μη ψηφία αλλά έρχεται περισσότερες από μία φορές) System.out.println (Pattern.matches ('D', 'abc')) // Έξοδος: false // It's a Digit System.out.println (Pattern.matches ('D', '1 ')) // Έξοδος: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Έξοδος: false // (ψηφίο και char) System.out.println (Pattern.matches (' D ',' 323abc ')) // Έξοδος: false // (μη ψηφία και έρχεται μία φορά) System.out.println (Pattern.matches (' D ',' m ')) // Έξοδος: true System.out .pr intln ('metacharacters D with quantifier ....') // (μη ψηφία και μπορεί να έρθει 0 ή περισσότερες φορές) System.out.println (Pattern.matches ('D *', 'abc')) // Έξοδος : αληθινό}}

χύτευση διπλά στο int java

Με βάση τις προαναφερθείσες συνθήκες, θα εμφανίσει την έξοδο. Έτσι λειτουργεί. Λοιπόν, αυτό αφορούσε διάφορους τύπους Ρετζέξ. Με αυτό, φτάνουμε στο τέλος αυτού του άρθρου. Εγώελπίζω ότι το βρήκατε ενημερωτικό. Αν θέλετε να μάθετε περισσότερα, μπορείτε να δείτε το επισης.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα του ταξιδιού σας, για να γίνετε εκτός από αυτές τις ερωτήσεις της συνέντευξης java, έχουμε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για φοιτητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του άρθρου 'Java Regex' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.