java regex tutorial with regular expression examples
Αυτό το σεμινάριο Java Regex εξηγεί τι είναι μια τυπική έκφραση στην Java, γιατί το χρειαζόμαστε και πώς να το χρησιμοποιήσουμε με τη βοήθεια παραδειγμάτων κανονικής έκφρασης:
ΠΡΟΣ ΤΗΝ κοινή έκφραση στην Java που συντομογραφείται ως ' regex 'Είναι μια έκφραση που χρησιμοποιείται για τον καθορισμό ενός μοτίβου αναζήτησης για συμβολοσειρές.
Το μοτίβο αναζήτησης μπορεί να είναι ένας απλός χαρακτήρας ή ένα υπόστρωμα ή μπορεί να είναι μια σύνθετη συμβολοσειρά ή έκφραση που καθορίζει ένα συγκεκριμένο μοτίβο που θα αναζητηθεί στη συμβολοσειρά.
Περαιτέρω, το μοτίβο μπορεί να πρέπει να ταιριάζει μία ή περισσότερες φορές με τη συμβολοσειρά.
=> Επισκεφτείτε εδώ για να δείτε τη σειρά εκπαίδευσης Java για όλους.
Τι θα μάθετε:
- Κανονική έκφραση: Γιατί το χρειαζόμαστε
- Επικύρωση μέσω ηλεκτρονικού ταχυδρομείου με χρήση του Regex
- συμπέρασμα
Κανονική έκφραση: Γιατί το χρειαζόμαστε
Μια κανονική έκφραση χρησιμοποιείται κυρίως για την αναζήτηση ενός μοτίβου σε μια συμβολοσειρά. Γιατί αναζητούμε ένα μοτίβο σε μια συμβολοσειρά; Ίσως θέλουμε να βρούμε ένα συγκεκριμένο μοτίβο σε μια συμβολοσειρά και στη συνέχεια να το χειριστούμε ή να το επεξεργαστούμε.
Έτσι, σε μια εφαρμογή υπολογιστή, ενδέχεται να έχουμε μια συνεχή απαίτηση χειρισμού διαφόρων μοτίβων. Ως εκ τούτου, χρειαζόμαστε πάντα regex για να διευκολύνουμε την αναζήτηση του μοτίβου.
Τώρα που δίνεται ένα μοτίβο για αναζήτηση, πώς ακριβώς λειτουργεί το regex;
Όταν αναλύουμε και τροποποιούμε το κείμενο χρησιμοποιώντας ένα regex, λέμε ότι «έχουμε εφαρμόσει το regex στη συμβολοσειρά ή το κείμενο». Αυτό που κάνουμε είναι να εφαρμόσουμε το μοτίβο στο κείμενο με κατεύθυνση «αριστερά προς τα δεξιά» και η συμβολοσειρά προέλευσης ταιριάζει με το μοτίβο.
Για παράδειγμα, θεωρήστε μια συμβολοσειρά ' αμπαμπαμπάμπ '. Ας υποθέσουμε ότι έχει οριστεί ένα regex «aba». Τώρα πρέπει να εφαρμόσουμε αυτό το regex στη συμβολοσειρά. Εφαρμόζοντας το regex από αριστερά προς τα δεξιά, το regex θα ταιριάζει με τη συμβολοσειρά ' aba_aba___ », Σε δύο μέρη.
Έτσι, όταν χρησιμοποιηθεί ένας χαρακτήρας προέλευσης σε έναν αγώνα, δεν μπορούμε να τον επαναχρησιμοποιήσουμε. Έτσι, μετά την εύρεση του πρώτου αγώνα aba, ο τρίτος χαρακτήρας «a» δεν επαναχρησιμοποιήθηκε.
πώς να αντιγράψετε το DVD δωρεάν
java.util.regex
Η γλώσσα Java δεν παρέχει καμία ενσωματωμένη κλάση για regex. Αλλά μπορούμε να εργαστούμε με κανονικές εκφράσεις εισάγοντας το ' java.util.regex Πακέτο.
Το πακέτο java.util.regex παρέχει μία διεπαφή και τρεις κατηγορίες όπως φαίνεται παρακάτω:
Κατηγορία προτύπων: Μια κλάση μοτίβου αντιπροσωπεύει το μεταγλωττισμένο regex. Η κλάση Pattern δεν έχει δημόσιους κατασκευαστές, αλλά παρέχει μεθόδους στατικής μεταγλώττισης () που επιστρέφουν αντικείμενα Pattern και μπορούν να χρησιμοποιηθούν για τη δημιουργία μοτίβου.
Κατηγορία Matcher: Το αντικείμενο κλάσης Matcher αντιστοιχεί στο μοτίβο regex με τη συμβολοσειρά. Όπως η κλάση Pattern, αυτή η κατηγορία επίσης δεν παρέχει δημόσιους κατασκευαστές. Παρέχει τη μέθοδο matcher () που επιστρέφει ένα αντικείμενο Matcher.
PatternSyntaxException: Αυτή η τάξη ορίζει μια μη ελεγμένη εξαίρεση. Ένα αντικείμενο τύπου PatternSyntaxException επιστρέφει μια μη ελεγμένη εξαίρεση που υποδεικνύει ένα σφάλμα σύνταξης στο μοτίβο regex.
Διεπαφή MatchResult: Η διεπαφή MatchResult καθορίζει το αποτέλεσμα αντιστοίχισης μοτίβου regex.
Παράδειγμα Java Regex
Ας εφαρμόσουμε ένα απλό παράδειγμα regex στην Java. Στο παρακάτω πρόγραμμα έχουμε μια απλή συμβολοσειρά ως μοτίβο και μετά την αντιστοιχίζουμε με μια συμβολοσειρά. Η έξοδος εκτυπώνει τη θέση έναρξης και λήξης στη συμβολοσειρά όπου βρίσκεται το μοτίβο.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String args()) { //define a pattern to be searched Pattern pattern = Pattern.compile('Help.'); // Search above pattern in 'softwareTestingHelp.com' Matcher m = pattern.matcher('softwareTestingHelp.com'); // print the start and end position of the pattern found while (m.find()) System.out.println('Pattern found from position ' + m.start() + ' to ' + (m.end()-1)); } }
Παραγωγή:
Το μοτίβο βρέθηκε από 15 έως 19
Regex Matcher στην Ιάβα
Η τάξη matcher εφαρμόζει τη διεπαφή MatchResult. Το Matcher λειτουργεί ως κινητήρας regex και χρησιμοποιείται για την ακριβή αντιστοίχιση μιας ακολουθίας χαρακτήρων.
Παρακάτω δίνονται οι κοινές μέθοδοι της κατηγορίας Matcher. Έχει περισσότερες μεθόδους, αλλά έχουμε παραθέσει μόνο τις σημαντικές μεθόδους παρακάτω.
Μην | Μέθοδος | Περιγραφή |
---|---|---|
7 | εκκίνηση () | Δίνει τον αρχικό δείκτη της αντιστοιχισμένης ακολουθίας και τον επιστρέφει. |
1 | boolean αγώνες () | Ελέγχει εάν το regex ταιριάζει με το μοτίβο. |
δύο | Μοτίβο μοτίβου () | Επιστρέφει το μοτίβο που ερμηνεύει ο αντιστοιχιστής. |
3 | boolean εύρεση () | Αυτή η μέθοδος βρίσκει την επόμενη έκφραση που ταιριάζει με το μοτίβο. |
4 | boolean εύρεση (int start) | Ίδιο με το εύρημα () αλλά βρίσκει την έκφραση να ταιριάζει από τη δεδομένη θέση έναρξης. |
5 | Ομάδα συμβολοσειρών () | Επιστρέφει την ακολουθία που ταιριάζει με το μοτίβο. |
6 | Ομάδα συμβολοσειρών (όνομα συμβολοσειράς) | Επιστρέφει την ακολουθία εισαγωγής. Αυτό καταγράφεται στην προηγούμενη λειτουργία αντιστοίχισης καταγράφοντας την ομάδα με το καθορισμένο όνομα. |
8 | int end () | Επιστρέφει την τελική θέση / ευρετήριο της αντιστοιχισμένης ακολουθίας. |
9 | int groupCount () | Επιστρέψτε τον συνολικό αριθμό αντιστοιχισμένης ακολουθίας. |
10 | Αντικατάσταση συμβολοσειράς Όλα (Αντικατάσταση συμβολοσειράς) | Αντικαταστήστε όλες τις ακολουθίες της ακολουθίας εισόδου που ταιριάζουν με το μοτίβο με δεδομένη συμβολοσειρά αντικατάστασης. |
έντεκα | String ReplFirst (Αντικατάσταση συμβολοσειράς) | Αντικαταστήστε την πρώτη αντιστοίχιση ακολουθίας της ακολουθίας εισόδου με την καθορισμένη συμβολοσειρά αντικατάστασης. |
12 | String toString () | Επιστρέψτε την παράσταση συμβολοσειράς του τρέχοντος αντιστοιχιστή. |
Παράδειγμα εφαρμογής κανονικής έκφρασης
Ας δούμε ένα παράδειγμα της χρήσης ορισμένων από αυτές τις μεθόδους.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class MatcherDemo { public static void main(String() args) { String inputString = 'She sells sea shells on the sea shore with shells'; //obtain a Pattern object Pattern pattern = Pattern.compile('shells'); // obtain a matcher object System.out.println('input string: ' + inputString); Matcher matcher = pattern.matcher(inputString); inputString = matcher.replaceFirst('pearls'); System.out.println('
replaceFirst method:' + inputString); //use replaceAll method to replace all occurrences of pattern inputString = matcher.replaceAll('pearls'); System.out.println('
replaceAll method:' + inputString); } }
Παραγωγή:
συμβολοσειρά εισόδου: Πωλεί όστρακα στην όχθη της θάλασσας με όστρακα
Αντικαταστήστε την πρώτη μέθοδο: Πουλάει θαλάσσια μαργαριτάρια στην ακτή με κοχύλια
ΑνταλλαγήΌλη η μέθοδος: Πωλεί μαργαριτάρια στην ακτή της θάλασσας με μαργαριτάρια
Κατηγορία μοτίβου Regex στην Ιάβα
Η κλάση προτύπων ορίζει το μοτίβο για τον κινητήρα regex που μπορεί στη συνέχεια να χρησιμοποιηθεί για αντιστοίχιση με τη συμβολοσειρά εισόδου.
Ο παρακάτω πίνακας δείχνει τις μεθόδους που παρέχονται από την κλάση Pattern που χρησιμοποιείται συνήθως.
Μην | Μέθοδος | Περιγραφή |
---|---|---|
7 | Διαχωρισμός συμβολοσειράς () (είσοδος CharSequence, int όριο) | Η συμβολοσειρά εισόδου χωρίζεται γύρω από αγώνες που βρέθηκαν από ένα συγκεκριμένο μοτίβο. |
1 | μεταγλώττιση στατικού μοτίβου (String regex) | Επιστρέφει τη μεταγλωττισμένη αναπαράσταση του regex. |
δύο | μεταγλώττιση στατικού μοτίβου (String regex, int flags) | Μεταγλώττιση με δεδομένο regex χρησιμοποιώντας καθορισμένες σημαίες και μοτίβο επιστροφών. |
3 | Αγώνες αγώνων (εισαγωγή CharSequence) | Επιστρέφει έναν ταιριαστή αντιστοιχίζοντας την ακολουθία εισόδου με το μοτίβο. |
4 | στατικοί boolean αγώνες (String regex, CharSequence input) | Μεταγλωττίζει το δεδομένο regex και ταιριάζει με το μοτίβο με μια δεδομένη είσοδο. |
5 | σημαίες int () | Επιστρέφει σημαίες του μοτίβου με το οποίο γίνεται η αντιστοίχιση. |
6 | Διαχωρισμός συμβολοσειράς () (είσοδος CharSequence) | Η συμβολοσειρά εισόδου χωρίζεται γύρω από αγώνες που βρέθηκαν από ένα συγκεκριμένο μοτίβο. |
8 | Σχέδιο συμβολοσειράς () | Επιστρέφει το μοτίβο κανονικής έκφρασης. |
9 | στατικό απόσπασμα συμβολοσειράς (String s) | Επιστρέφει μια κυριολεκτική συμβολοσειρά (μοτίβο) για τη δεδομένη συμβολοσειρά. |
10 | String toString () | Αποκτήστε συμβολοσειρά αναπαράσταση του μοτίβου. |
Το παρακάτω παράδειγμα χρησιμοποιεί μερικές από τις παραπάνω μεθόδους της κλάσης Pattern.
import java.util.regex.*; public class Main { public static void main(String() args) { // define a REGEX String String REGEX = 'Test'; // string to be searched for given pattern String actualString = 'Welcome to SoftwareTestingHelp portal'; // generate a pattern for given regex using compile method Pattern pattern = Pattern.compile(REGEX); // set limit to 2 int limit = 2; // use split method to split the string String() array = pattern.split(actualString, limit); // print the generated array for (int i = 0; i Παραγωγή:
array (0) = Καλώς ορίσατε στο λογισμικό
array (1) = πύλη βοήθειας
Στο παραπάνω πρόγραμμα, χρησιμοποιούμε τη μέθοδο μεταγλώττισης για να δημιουργήσουμε ένα μοτίβο. Στη συνέχεια, χωρίσαμε τη συμβολοσειρά εισόδου για αυτό το μοτίβο και τη διαβάσαμε σε πίνακα. Τέλος, εμφανίζουμε τον πίνακα που δημιουργήθηκε ως αποτέλεσμα του διαχωρισμού της συμβολοσειράς εισόδου.
Μέθοδος Regex String Matches
Έχουμε δει τη μέθοδο String.Contains () στα σεμινάρια συμβολοσειράς μας. Αυτή η μέθοδος επιστρέφει μια τιμή boolean true ή false, ανάλογα με το αν η συμβολοσειρά περιέχει έναν συγκεκριμένο χαρακτήρα ή όχι.
καλύτερο δωρεάν λογισμικό για την επιτάχυνση του υπολογιστή
Ομοίως, έχουμε μια μέθοδο 'ταιριάζει ()' για να ελέγξουμε αν η συμβολοσειρά ταιριάζει με μια κανονική έκφραση ή regex. Εάν η συμβολοσειρά ταιριάζει με το καθορισμένο regex τότε επιστρέφεται μια πραγματική τιμή ή αλλιώς επιστρέφεται false.
Η γενική σύνταξη των αγώνων () μέθοδος:
public boolean matches (String regex)
Εάν το καθορισμένο regex δεν είναι έγκυρο, τότε εμφανίζεται το 'PatternSyntaxException'.
Ας εφαρμόσουμε ένα πρόγραμμα για να δείξουμε τη χρήση της μεθόδου αντιστοιχιών ().
public class MatchesExample{ public static void main(String args()){ String str = new String('Java Series Tutorials'); System.out.println('Input String: ' + str); //use matches () method to check if particular regex matches to the given input System.out.print('Regex: (.*)Java(.*) matches string? ' ); System.out.println(str.matches('(.*)Java(.*)')); System.out.print('Regex: (.*)Series(.*) matches string? ' ); System.out.println(str.matches('(.*)Series(.*)')); System.out.print('Regex: (.*)Series(.*) matches string? ' ); System.out.println(str.matches('(.*)String(.*)')); System.out.print('Regex: (.*)Tutorials matches string? ' ); System.out.println(str.matches('(.*)Tutorials')); } }
Παραγωγή:
Συμβολοσειρά εισόδου: Εκμάθηση σειράς Java
Regex: (. *) Η Java (. *) Ταιριάζει με τη συμβολοσειρά; αληθής
Regex: (. *) Η σειρά (. *) Ταιριάζει με τη συμβολοσειρά; αληθής
Regex: (. *) Η σειρά (. *) Ταιριάζει με τη συμβολοσειρά; ψευδής
Regex: (. *) Τα σεμινάρια ταιριάζουν με τη συμβολοσειρά; αληθής
Χρησιμοποιούμε πολλούς ειδικούς χαρακτήρες και μεταχαρακτήρες με κανονικές εκφράσεις στην Java. Χρησιμοποιούμε επίσης πολλές κατηγορίες χαρακτήρων για αντιστοίχιση μοτίβων. Σε αυτήν την ενότητα, θα παρέχουμε τους πίνακες που περιέχουν τάξεις χαρακτήρων, μετα-χαρακτήρες και ποσοτικούς προσδιοριστές που μπορούν να χρησιμοποιηθούν με regex.
Κατηγορίες χαρακτήρων Regex
Μην Κατηγορία χαρακτήρων Περιγραφή 7 (a-z && (^ m-p)) Αφαίρεση: a έως z, και όχι m έως p: (a-lq-z) 1 (pqr) p, q ή r δύο (^ pqr) Άρνηση: Οποιοσδήποτε χαρακτήρας εκτός από p, q ή r 3 (α-ζΑ-Ζ) Εύρος: a έως z ή A έως Z, συμπεριλαμβανομένων 4 (α-δ (m-p)) Ένωση: a έως d, ή m έως p: (a-dm-p) 5 (a-z && (def)) Διατομή: d, e ή f 6 (a-z && (^ bc)) Αφαίρεση: a έως z, εκτός από τα b και c: (ad-z)
Ποσοτικοί προσδιοριστές Regex
Τα ποσοτικά χρησιμοποιούνται για να καθορίσουν τον αριθμό των φορών που θα εμφανιστεί ο χαρακτήρας στο regex.
Ο παρακάτω πίνακας δείχνει τους κοινούς μετρητές regex που χρησιμοποιούνται στην Java.
Μην Μετρητής Regex Περιγραφή 7 ΣΕ Οποιοδήποτε μη λεκτικό χαρακτήρα, (^ w) 1 Χ? Το x εμφανίζεται μία ή καθόλου δύο x + Το x εμφανίζεται μία ή περισσότερες φορές 3 Χ * Το x εμφανίζεται μηδέν ή περισσότερες φορές 4 x {ν} το x εμφανίζεται n φορές 5 x {ν,} το x εμφανίζεται n ή περισσότερες φορές 6 X και Z} Το x εμφανίζεται τουλάχιστον y φορές αλλά λιγότερο από z φορές
Μετα-χαρακτήρες Regex
Οι μεταχαρακτήρες στο regex λειτουργούν ως κωδικοί συντομογραφίας. Αυτοί οι κωδικοί περιλαμβάνουν χαρακτήρα κενό και μη κενό διάστημα μαζί με άλλους κωδικούς πρόσβασης.
Ο παρακάτω πίνακας παραθέτει τους χαρακτήρες Meta regex.
Μην Μετα χαρακτήρες Περιγραφή 1 . Οποιοσδήποτε χαρακτήρας (μπορεί ή δεν ταιριάζει με τον τερματιστή) δύο ρε Τυχόν ψηφία, (0-9) 3 ΡΕ Οποιαδήποτε μη ψηφία, (^ 0-9) 4 μικρό Οποιοσδήποτε χαρακτήρας κενού διαστήματος, ( t n x0B f r) 5 ΜΙΚΡΟ Οποιοσδήποτε χαρακτήρας χωρίς κενό διάστημα, (^ s) 6 σε Οποιοσδήποτε χαρακτήρας λέξης, (a-zA-Z_0-9) 8 β Όριο λέξης 9 Β Όριο χωρίς λέξεις
Δίνεται παρακάτω ένα πρόγραμμα Java που χρησιμοποιεί τους παραπάνω ειδικούς χαρακτήρες στο Regex.
import java.util.regex.*; public class RegexExample{ public static void main(String args()){ // returns true if string exactly matches 'Jim' System.out.print('Jim (jim):' + Pattern.matches('Jim', 'jim')); // Returns true if the input string is Peter or peter System.out.println('
(Pp)eter(Peter) :' + Pattern.matches('(Pp)eter', 'Peter')); //true if string = abc System.out.println('
.*abc.*(pqabcqp) :' + Pattern.matches('.*abc.*', 'pqabcqp')); // true if string doesn't start with a digit System.out.println('
^(^\d).*(abc123):' + Pattern.matches('^(^\d).*', 'abc123')); // returns true if the string contains exact three letters System.out.println('
(a-zA-Z)(a-zA-Z)(a-zA-Z) (aQz):' + Pattern.matches('(a-zA-Z)(a-zA-Z)(a-zA-Z)', 'aQz')); System.out.println('
(a-zA-Z)(a-zA-Z)(a-zA-Z), a10z' + Pattern.matches('(a-zA-Z)(a-zA-Z)(a-zA-Z), a10z', 'a10z')); //input string length = 4 // true if the string contains 0 or more non-digits System.out.println('
\D*, abcde:' + Pattern.matches('\D*', 'abcde')); //True // true of line contains only word this ^-start of the line, $ - end of the line System.out.println('
^This$, This is Java:' + Pattern.matches('^This$', 'This is Java')); System.out.println('
^This$, This:' + Pattern.matches('^This$, This', 'This')); System.out.println('
^This$, Is This Java?:' + Pattern.matches('^This$, Is This Java?', 'Is This Java?')); } }
Παραγωγή:
Jim (jim): ψευδής
(Pp) eter (Peter): αλήθεια
. * abc. * (pqabcqp): true
^ (^ d). * (abc123): true
(a-zA-Z) (a-zA-Z) (a-zA-Z) (aQz): αλήθεια
(a-zA-Z) (a-zA-Z) (a-zA-Z), a10zfalse
D *, abcde: true
^ Αυτό το $, αυτό είναι Java: false
^ This $, This: false
^ This $, Is This Java;: false
Στο παραπάνω πρόγραμμα, έχουμε παράσχει διάφορους regex που ταιριάζουν με τη συμβολοσειρά εισόδου. Συνιστάται στους αναγνώστες να διαβάσουν τα σχόλια στο πρόγραμμα για κάθε regex για να κατανοήσουν καλύτερα την έννοια.
Λογικός ή (|) τελεστής Regex
Μπορούμε να χρησιμοποιήσουμε το λογικό ή (| χειριστή) στο regex που μας δίνει την επιλογή να επιλέξουμε είτε τελεστή του | χειριστής. Μπορούμε να χρησιμοποιήσουμε αυτόν τον τελεστή σε regex για να δώσουμε μια επιλογή χαρακτήρα ή συμβολοσειράς. Για παράδειγμα, αν θέλουμε να ταιριάξουμε και τις δύο λέξεις, «δοκιμή» και «δοκιμή», τότε θα συμπεριλάβουμε αυτές τις λέξεις στη λογική ή στον τελεστή ως Δοκιμή | δοκιμή.
Ας δούμε το παρακάτω παράδειγμα για να κατανοήσουμε αυτόν τον τελεστή.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexOR { public static void main(String() args) { // Regex string to search for patterns Test or test String regex = '(Test|test)'; // Compiles the pattern and obtains the matcher object from input string. Pattern pattern = Pattern.compile(regex); String input = 'Software Testing Help'; Matcher matcher = pattern.matcher(input); // print every match while (matcher.find()) { System.out.format('Text '%s' found at %d to %d.%n', matcher.group(), matcher.start(), matcher.end()); } //define another input string and obtain the matcher object input = 'SoftwaretestingHelp'; matcher = pattern.matcher(input); // Print every match while (matcher.find()) { System.out.format('Text '%s' found at %d to %d.%n', matcher.group(), matcher.start(), matcher.end()); } } }
Παραγωγή:
Το κείμενο 'Δοκιμή' βρέθηκε στις 9 έως 13.
Το κείμενο «δοκιμή» βρέθηκε στις 8 έως 12.
Σε αυτό το πρόγραμμα, παρέχουμε το regex '(Test | test)'. Στη συνέχεια, πρώτα δίνουμε τη συμβολοσειρά εισόδου ως 'Βοήθεια δοκιμών λογισμικού' και ταιριάζουμε με το μοτίβο. Βλέπουμε ότι ο αγώνας βρέθηκε και η θέση είναι τυπωμένη.
Στη συνέχεια, δίνουμε τη συμβολοσειρά εισόδου ως 'SoftwaretestingHelp'. Αυτή τη φορά βρίσκεται και ο αγώνας. Αυτό συμβαίνει επειδή το regex έχει χρησιμοποιήσει ή χειριστή και ως εκ τούτου το μοτίβο και στις δύο πλευρές του | ο χειριστής ταιριάζει με τη συμβολοσειρά.
Επικύρωση μέσω ηλεκτρονικού ταχυδρομείου με χρήση του Regex
Μπορούμε επίσης να επικυρώσουμε το αναγνωριστικό email (διεύθυνση) με το regex χρησιμοποιώντας τη μέθοδο java.util.regex.Pattern.matches (). Ταιριάζει με το δεδομένο αναγνωριστικό email με το regex και επιστρέφει αληθές εάν το email είναι έγκυρο.
Το παρακάτω πρόγραμμα δείχνει την επικύρωση του email χρησιμοποιώντας το regex.
public class EmailDemo { static boolean isValidemail(String email) { String regex = '^(\w-_\.+)*(\w-_\.)\@((\w)+\.)+(\w)+(\w)$'; //regex to validate email. return email.matches(regex); //match email id with regex and return the value } public static void main(String() args) { String email = 'ssthva@gmail.com'; System.out.println('The Email ID is: ' + email); System.out.println('Email ID valid? ' + isValidemail(email)); email = '@sth@gmail.com'; System.out.println('The Email ID is: ' + email); System.out.println('Email ID valid? ' + isValidemail(email)); } }
Παραγωγή:
Το αναγνωριστικό email είναι: ssthva@gmail.com
Το αναγνωριστικό email είναι έγκυρο; αληθής
Το αναγνωριστικό email είναι: @ sth @ gmail.com
Το αναγνωριστικό email είναι έγκυρο; ψευδής
Όπως μπορούμε να δούμε από την παραπάνω έξοδο, το πρώτο αναγνωριστικό email είναι έγκυρο. Το δεύτερο αναγνωριστικό ξεκινά απευθείας με το @, και ως εκ τούτου το regex δεν το επικυρώνει. Ως εκ τούτου, είναι μη έγκυρο αναγνωριστικό.
καλύτερη δωρεάν εφαρμογή λήψης μουσικής mp3 για Android
Συχνές Ερωτήσεις
Q # 1) Τι είναι μια τυπική έκφραση;
Απάντηση: ΠΡΟΣ ΤΗΝ Κοινή έκφραση Συνήθως ονομάζεται regex είναι ένα μοτίβο ή μια ακολουθία χαρακτήρων (κανονικοί ή ειδικοί ή μετα-χαρακτήρες) που χρησιμοποιείται για την επικύρωση μιας συμβολοσειράς εισόδου.
Q # 2) Ποια είναι η σημασία της κλάσης Matcher για μια κανονική έκφραση στην Java;
Απάντηση: Η τάξη matcher (java.util.regex.Matcher) λειτουργεί ως μηχανή regex. Εκτελεί τις αντίστοιχες λειτουργίες ερμηνεύοντας το Πρότυπο.
Q # 3) Ποιο είναι το μοτίβο στην Java;
Απάντηση: Το πακέτο java.util.regex παρέχει μια κλάση μοτίβου που χρησιμοποιείται για τη μεταγλώττιση ενός regex σε ένα μοτίβο που είναι η τυπική αναπαράσταση του regex. Αυτό το μοτίβο στη συνέχεια χρησιμοποιείται για την επικύρωση συμβολοσειρών αντιστοιχίζοντας το με το μοτίβο.
Q # 4) Τι είναι το B σε μια κανονική έκφραση;
Απάντηση: Το B σε regex δηλώνεται ως b και είναι ένας χαρακτήρας αγκύρωσης που χρησιμοποιείται για να ταιριάζει με μια θέση που ονομάζεται όριο λέξης. Η αρχή της γραμμής συμβολίζεται με ένα μοτίβο (^) και το τέλος της γραμμής συμβολίζεται με ένα σύμβολο δολαρίου ($).
Ε # 5) Είναι το Java ασφαλές για νήματα μοτίβου;
Απάντηση: Ναί. Οι εμφανίσεις της κλάσης Pattern είναι αμετάβλητες και ασφαλείς για χρήση από πολλά ταυτόχρονα νήματα. Ωστόσο, οι παρουσίες τάξης matcher δεν είναι ασφαλείς.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε συζητήσει τακτικές εκφράσεις στην Java. Η κανονική έκφραση που είναι επίσης γνωστή ως «regex» χρησιμοποιείται για την επικύρωση της συμβολοσειράς εισόδου στην Java. Η Java παρέχει το « java.util.regex ' πακέτο που παρέχει τάξεις όπως Pattern, Matcher κ.λπ. που βοηθούν στον καθορισμό και την αντιστοίχιση του μοτίβου με τη συμβολοσειρά εισόδου.
Έχουμε επίσης δει διάφορες ειδικές κατηγορίες χαρακτήρων και μεταχαρακτήρες που μπορούμε να χρησιμοποιήσουμε στο regex που δίνουν σύντομους κωδικούς για την αντιστοίχιση μοτίβων. Εξερευνήσαμε επίσης την επικύρωση email χρησιμοποιώντας το regex.
=> Εξερευνήστε τη σειρά απλών Java Training εδώ.
Συνιστώμενη ανάγνωση