c regex tutorial what is c regular expression
Αυτό το σεμινάριο C # Regex εξηγεί τι είναι μια κανονική έκφραση στο C #, τη σύνταξη, τις μεθόδους τάξης Regex και τον τρόπο χρήσης αυτών των μεθόδων με τη βοήθεια παραδειγμάτων:
Η κανονική έκφραση στο C # χρησιμοποιείται για την αντιστοίχιση ενός συγκεκριμένου μοτίβου χαρακτήρων. Οι τακτικές εκφράσεις χρησιμοποιούνται κάθε φορά που ένας χρήστης χρειάζεται να βρει κάποιο επαναλαμβανόμενο μοτίβο ή να κάνει επικύρωση δεδομένων ή ακόμη και για τον έλεγχο της μορφοποίησης δεδομένων.
Ένα RegEx χρησιμοποιείται για να βρει αν μια συμβολοσειρά περιέχει ή ταιριάζει με ένα δεδομένο μοτίβο χαρακτήρων. Το regex είναι κυρίως μια ακολουθία χαρακτήρων που υποδηλώνει ένα μοτίβο.
Ένα μοτίβο μπορεί να είναι οτιδήποτε κυμαίνεται από αριθμούς, χαρακτήρες ή συνδυασμό όλων. Το Regex χρησιμοποιείται ευρέως για επικύρωση. Ανάλυση ή αντιστοίχιση συμβολοσειρών, για παράδειγμα, εύρεση εάν μια συμβολοσειρά ταιριάζει με τη μορφή νομίσματος, τον αριθμό τηλεφώνου ή τη μορφή ημερομηνίας.
=> Διαβάστε τη σειρά Easy C # Training.
qa διευθύνσεις ερωτήσεων συνέντευξης απαντήσεις pdf
Τι θα μάθετε:
- Κατηγορία Regex σε C #
- συμπέρασμα
Κατηγορία Regex σε C #
Η τάξη Regex χρησιμοποιείται στο C # για την εκτέλεση λειτουργιών regex. Περιέχει πολλές διαφορετικές μεθόδους που μπορούν να χρησιμοποιηθούν για την εκτέλεση διαφορετικών λειτουργιών που σχετίζονται με το regex.
Μπορεί να χρησιμοποιηθεί για την ανάλυση μεγάλου κειμένου για την εύρεση μιας συγκεκριμένης ακολουθίας χαρακτήρων, χρησιμοποιώντας μεθόδους που μπορούν να χρησιμοποιηθούν για την εκτέλεση μιας αντιστοίχισης, για την αντικατάσταση ή για τη διάσπαση της ακολουθίας χαρακτήρων.
Η τάξη regex υπάρχει στο χώρο ονομάτων. System.Text.RegularExpression. Η τάξη δέχεται μια συμβολοσειρά με τη μορφή ακολουθίας χαρακτήρων ως παραμέτρου.
Μέθοδοι C # Regex
IsMatch
Η απλούστερη και πιο χρήσιμη μέθοδος στην τάξη Regex είναι η μέθοδος IsMatch. Αυτή η μέθοδος έχει διαφορετικές υπερφορτώσεις για την εκτέλεση αντιστοίχισης χαρακτήρων με βάση διαφορετικές παραμέτρους.
Το πιο απλό είναι IsMatch (κείμενο συμβολοσειράς) , αυτή η μέθοδος επιτρέπει στο χρήστη να παρέχει μια ακολουθία χαρακτήρων για αντιστοίχιση μιας συμβολοσειράς.
Η δεύτερη υπερφόρτωση IsMatch (κείμενο συμβολοσειράς, θέση int). Αυτή η μέθοδος επιστρέφει μια τιμή Boolean και παίρνει δύο παραμέτρους (συμβολοσειρά και ακέραιος). Το κείμενο συμβολοσειράς που καθορίζεται στην παράμετρο είναι βασικά ένας κατασκευαστής regex που θα ταιριάζει με την ακολουθία χαρακτήρων από τη θέση έναρξης που καθορίζεται από την ακέραια παράμετρο.
Έτσι, αυτή η μέθοδος θα προσπαθήσει να ταιριάξει την είσοδο συμβολοσειράς στη θέση που παρέχεται από μια ακέραια παράμετρο σε μια δεδομένη συμβολοσειρά.
Η τρίτη υπερφόρτωση, IsMatch (Κείμενο συμβολοσειράς, μοτίβο συμβολοσειράς) δέχεται δύο παραμέτρους και επιστρέφει μια τιμή Boolean. Η πρώτη παράμετρος είναι κείμενο στο οποίο ο χρήστης πρέπει να βρει ένα μοτίβο και η επόμενη παράμετρος παρέχει το μοτίβο που ο χρήστης αναζητά στο δεδομένο κείμενο.
Συνιστώμενη ανάγνωση = >> Αντιστοίχιση μοτίβων στη MySQL
Αντικατάσταση (κείμενο συμβολοσειράς, κείμενο αντικατάστασης συμβολοσειράς)
Η μέθοδος αντικατάστασης δέχεται δύο παραμέτρους και επιστρέφει μια τιμή συμβολοσειράς. Η πρώτη παράμετρος είναι η ακολουθία χαρακτήρων ή το regex που θέλετε να χρησιμοποιήσετε για αντιστοίχιση και η δεύτερη είναι η αντικατάσταση του regex.
Η μέθοδος λειτουργεί βρίσκοντας μια αντιστοίχιση του δεδομένου κειμένου και στη συνέχεια αντικαθιστά αυτήν με το κείμενο αντικατάστασης που παρέχεται από τον χρήστη. Η υπογραφή της μεθόδου είναι Αντικατάσταση δημόσιας συμβολοσειράς (κείμενο συμβολοσειράς, κείμενο αντικατάστασης συμβολοσειράς)
Δημόσια συμβολοσειρά () Διαχωρισμός (κείμενο συμβολοσειράς)
Η μέθοδος διαίρεσης από την τάξη regex δέχεται είσοδο συμβολοσειράς ως παράμετρο και επιστρέφει έναν πίνακα που περιέχει υποστρώματα. Η παράμετρος που περνά στη μέθοδο είναι η συμβολοσειρά που πρέπει να διαχωριστεί.
Η μέθοδος βρίσκει το αντίστοιχο μοτίβο εισόδου στη συμβολοσειρά και μόλις εντοπίσει οποιοδήποτε μοτίβο αντιστοίχισης, χωρίζει τη συμβολοσειρά σε αυτό το μέρος σε μικρότερο υπόστρωμα με κάθε μοτίβο αντιστοίχισης να είναι το σημείο σπάσιμο. Στη συνέχεια, η μέθοδος επιστρέφει έναν πίνακα που περιέχει όλα τα υποστρώματα.
Χρήση μεθόδων Regex C #
Ας ρίξουμε μια ματιά στη χρήση αυτών των μεθόδων γράφοντας ένα απλό πρόγραμμα.
public static void Main(string() args) { string patternText = 'Hello'; Regex reg = new Regex(patternText); //IsMatch(string input) Console.WriteLine(reg.IsMatch('Hello World')); //IsMatch(string input, int index) Console.WriteLine(reg.IsMatch('Hello', 0)); //IsMatch(string input, string pattern) Console.WriteLine(Regex.IsMatch('Hello World', patternText)); //Replace(string input, string replacement) Console.WriteLine(reg.Replace('Hello World', 'Replace')); //Split(string input, string pattern) string() arr = Regex.Split('Hello_World_Today', '_'); foreach(string subStr in arr) { Console.WriteLine('{0}', subStr); } }
Το αποτέλεσμα του παραπάνω προγράμματος
Αληθής
Αληθής
Αληθής
Αντικαταστήστε τον κόσμο
γεια σας
Κόσμος
Σήμερα
Η εξήγηση για τον παραπάνω κώδικα:
Στην αρχή του προγράμματος, έχουμε δημιουργήσει ένα αντικείμενο και για το μοτίβο που θα χρησιμοποιούμε για την αντιστοίχιση κώδικα στην επόμενη εισαγωγή συμβολοσειράς, έχουμε χρησιμοποιήσει τη μορφοποίηση κειμένου για να διατηρήσουμε τα πράγματα απλά στην αρχή, αλλά αν είστε άνετοι, μπορείτε αρχίστε να χρησιμοποιείτε μοτίβα κανονικής έκφρασης. (Θα συζητήσουμε λεπτομερώς το μοτίβο κανονικής έκφρασης καθώς προχωράμε σε αυτό το σεμινάριο)
Στη συνέχεια, θα χρησιμοποιήσουμε συμβολοσειρά αντιστοίχισης για να εισαγάγουμε τον συντελεστή που έχουμε δηλώσει ως καθορισμένο αντικείμενο με τη συμβολοσειρά εισόδου και αν ταιριάζει τότε θα επιστρέψει για να επιστρέψει ψευδής.
Η επόμενη μέθοδος που χρησιμοποιήσαμε είναι το IsMethod (είσοδος συμβολοσειράς, int index). Αυτή η μέθοδος δέχεται δύο παραμέτρους και εδώ παρέχουμε συμβολοσειρά εισόδου και το ευρετήριο από όπου πρέπει να ξεκινήσει ο αγώνας. Για παράδειγμα, εδώ θέλαμε να ξεκινήσουμε την αντιστοίχιση από την αρχή της συμβολοσειράς εισόδου.
Στη συνέχεια, δείξαμε τη χρήση του IsMatch (είσοδος συμβολοσειράς, μοτίβο συμβολοσειράς). Εδώ παρείχαμε τη συμβολοσειρά εισόδου, τότε θέλαμε να το βρούμε αν το κείμενο μοτίβου υπάρχει στην είσοδο ή όχι. Εάν είναι παρόν τότε θα επιστρέψει αληθινό (όπως στην περίπτωσή μας) αλλιώς θα επιστρέψει ψευδές.
Μια άλλη μέθοδος που συζητήσαμε αντικαθίσταται. Αυτή η μέθοδος είναι αρκετά χρήσιμη σε προγράμματα όπου θέλετε να κάνετε αλλαγές στα δεδομένα εισαγωγής ή να αλλάξετε τη μορφή των υπαρχόντων δεδομένων.
Εδώ παρέχουμε δύο παραμέτρους, η πρώτη είναι η συμβολοσειρά εισόδου και η δεύτερη είναι η συμβολοσειρά που μπορεί να χρησιμοποιηθεί για την αντικατάσταση της προηγούμενης συμβολοσειράς. Αυτή η μέθοδος χρησιμοποιεί επίσης το μοτίβο που ορίζεται στο αντικείμενο regex που ορίσαμε νωρίτερα.
Μια άλλη σημαντική μέθοδος που χρησιμοποιήσαμε, είναι η διάσπαση. Αυτή η μέθοδος χρησιμοποιείται για τον διαχωρισμό της δεδομένης συμβολοσειράς με βάση ορισμένα επαναλαμβανόμενα μοτίβα. Εδώ, έχουμε παράσχει μια συμβολοσειρά 'Hello_World_Today'.
Ας υποθέσουμε ότι θέλουμε να αφαιρέσουμε την υπογράμμιση από τη δεδομένη συμβολοσειρά και να λάβουμε τις υποστρώσεις. Για αυτό, καθορίζουμε την παράμετρο εισαγωγής και μετά δίνουμε το μοτίβο που πρέπει να χρησιμοποιήσουμε ως σημείο διαχωρισμού. Η μέθοδος επιστρέφει έναν πίνακα και μπορούμε να χρησιμοποιήσουμε έναν απλό βρόχο όπως το πρόσχημα για να ανακτήσουμε όλες τις χορδές.
Σύνταξη κανονικής έκφρασης
Υπάρχουν πολλές διαφορετικές σύνταξη, όπως ειδικοί χαρακτήρες, ποσοτικοποιητές, τάξεις χαρακτήρων κ.λπ. που μπορούν να χρησιμοποιηθούν για να ταιριάξουν ένα συγκεκριμένο μοτίβο από μια δεδομένη είσοδο.
Σε αυτό το μέρος του σεμιναρίου, θα βουτήξουμε βαθιά στη σύνταξη που προσφέρει το regex και θα προσπαθήσουμε να λύσουμε μερικά σενάρια πραγματικής ζωής χρησιμοποιώντας τα. Πριν προχωρήσουμε, βεβαιωθείτε ότι έχετε αποκτήσει τη βασική ιδέα του regex και τις διάφορες μεθόδους που είναι διαθέσιμες στην τάξη regex.
Ειδικοί χαρακτήρες
Ειδικοί χαρακτήρες σε ένα regex χρησιμοποιούνται για την εκχώρηση πολλών διαφορετικών σημασιών σε ένα μοτίβο. Θα εξετάσουμε τώρα μερικούς από τους ευρέως χρησιμοποιούμενους ειδικούς χαρακτήρες και τη σημασία τους στο Regex
Ειδικοί χαρακτήρες | Εννοια |
---|---|
w και W | Το πεζό γράμμα «w» χρησιμοποιείται για την αντιστοίχιση αλφαριθμητικών / υπογράμμισης χαρακτήρων και το κεφαλαίο «W» χρησιμοποιείται για την αντιστοίχιση χαρακτήρων χωρίς λέξεις. |
^ | Αυτή είναι μια από τις πιο ευρέως χρησιμοποιούμενες σύνταξη. Δηλώνει την αρχή, τη λέξη ή το μοτίβο μετά από αυτό ξεκινά να ταιριάζει από την αρχή του κειμένου εισαγωγής. |
$ | Αυτό το σύμβολο χρησιμοποιείται για αντιστοίχιση λέξεων από το τέλος της συμβολοσειράς. Λέξεις / μοτίβα που υποδηλώνονται πριν από αυτό το σύμβολο θα ταιριάζουν με τις λέξεις που υπάρχουν στο τέλος της συμβολοσειράς. |
. (τελεία) | Η κουκκίδα χρησιμοποιείται για την αντιστοίχιση ενός μόνο χαρακτήρα στη δεδομένη συμβολοσειρά που εμφανίζεται μία φορά. |
n | Αυτό χρησιμοποιείται για μια νέα γραμμή. |
d και D | Το πεζό γράμμα «d» χρησιμοποιείται για να ταιριάζει με έναν ψηφίο χαρακτήρα και το πεζά «D» χρησιμοποιείται για να ταιριάζει με μη ψηφία χαρακτήρες. |
s και S | Το πεζό γράμμα «s» χρησιμοποιείται για να ταιριάζει με τα άσπρα διαστήματα και το κεφαλαίο «S» χρησιμοποιείται για να ταιριάζει με το μη λευκό διάστημα. |
Σύνταξη ποσοτικού προσδιοριστή
Η σύνταξη ποσοτικού προσδιορισμού χρησιμοποιείται για τη μέτρηση ή τον ποσοτικό προσδιορισμό των κριτηρίων αντιστοίχισης. Για παράδειγμα, εάν θέλετε να ελέγξετε εάν μια συγκεκριμένη συμβολοσειρά περιέχει ένα αλφάβητο μία ή περισσότερες φορές. Ας ρίξουμε μια ματιά σε μερικούς από τους κοινώς χρησιμοποιούμενους μετρητές στην Κανονική έκφραση.
Σύνταξη ποσοτικού προσδιοριστή | Εννοια |
---|---|
* | Αυτό το σύμβολο χρησιμοποιείται για να ταιριάζει με τον προηγούμενο χαρακτήρα. |
+ | Αυτό το σύμβολο χρησιμοποιείται για να ταιριάζει με έναν ή περισσότερους χαρακτήρες στη σειρά. |
{ν} | Το αριθμητικό ψηφίο μέσα στα σγουρά τιράντες χρησιμοποιείται για να ταιριάζει με τον αριθμό του προηγούμενου χαρακτήρα που ορίζεται από το αριθμητικό εσωτερικό σγουρά τιράντες. |
{ν,} | Ο αριθμός εντός των σγουρών στηριγμάτων και αυτό το σύμβολο χρησιμοποιείται για να βεβαιωθείτε ότι ταιριάζει τουλάχιστον με το n (δηλαδή την αριθμητική τιμή μέσα στα στηρίγματα). |
{ν, μ} | Αυτό το σύμβολο χρησιμοποιείται για αντιστοίχιση από τον προηγούμενο χαρακτήρα από n αριθμό φορών έως m αριθμό φορών. |
; | Αυτό το σύμβολο κάνει τους προηγούμενους χαρακτήρες να ταιριάζουν ως προαιρετικοί. |
Κατηγορία χαρακτήρων
Η κλάση χαρακτήρων είναι επίσης γνωστή ως σύνολα χαρακτήρων και αυτό χρησιμοποιείται για να πει στον κινητήρα regex να ψάξει για έναν αγώνα από πολλούς χαρακτήρες. Μια κλάση χαρακτήρων θα ταιριάζει μόνο με έναν χαρακτήρα και η σειρά των χαρακτήρων που περικλείονται μέσα στο σύνολο χαρακτήρων δεν έχει σημασία.
Κατηγορία χαρακτήρων | Εννοια |
---|---|
( εύρος ) | Το σύμβολο αγκύλης τετράγωνου χρησιμοποιείται για αντιστοίχιση για μια σειρά χαρακτήρων. Για παράδειγμα, μπορούμε να το χρησιμοποιήσουμε για να ορίσουμε οποιονδήποτε χαρακτήρα στην περιοχή από το αλφάβητο 'a' έως 'z', περικλείοντας το εύρος μέσα στην αγκύλη όπως (a-z) Ή, μπορούμε επίσης να ταιριάξουμε με τα αριθμητικά '1' έως '9', δηλώνοντας (1-9) |
(^ εύρος) | Αυτό υποδηλώνει κατηγορία χαρακτήρων άρνησης. Χρησιμοποιείται για να ταιριάζει με οτιδήποτε, όχι στην περιοχή που υποδηλώνεται εντός του βραχίονα. |
Αυτό χρησιμοποιείται για την αντιστοίχιση ειδικών χαρακτήρων που μπορεί να έχουν τα δικά τους σύμβολα regex. Το κάθετο χρησιμοποιείται για να ταιριάζει με τους ειδικούς χαρακτήρες στην κυριολεκτική τους μορφή. |
Ομαδοποίηση
Στρογγυλές αγκύλες ή παρενθέσεις μπορούν να χρησιμοποιηθούν για την ομαδοποίηση ενός μέρους της κανονικής έκφρασης. Αυτό επιτρέπει στο χρήστη είτε να προσθέσει έναν ποσοτικοποιητή με την έκφραση.
Ομαδοποίηση | Εννοια |
---|---|
(έκφραση ομάδας) | Οι αγκύλες χρησιμοποιούνται για την ομαδοποίηση μιας έκφρασης. |
| | Το | ο χειριστής χρησιμοποιείται εντός του στρογγυλού βραχίονα για τη χρήση μιας εναλλακτικής παραδείγματος χάριν (a | b). |
C # Παραδείγματα κανονικής έκφρασης
Στην προηγούμενη ενότητα, μάθαμε για τα σύμβολα κανονικής έκφρασης, σε αυτήν την ενότητα θα εξετάσουμε λεπτομερώς τη χρήση διαφορετικών συμβόλων στην Κανονική έκφραση και τον συνδυασμό στον οποίο μπορούν να χρησιμοποιηθούν για να ταιριάξουν διαφορετικές εκφράσεις.
Σε αυτό το σεμινάριο, θα συζητήσουμε μερικά από τα σενάρια πραγματικής ζωής που αντιμετωπίστηκαν ευρέως και μπορεί να αντιμετωπίσετε ως προγραμματιστής ενώ εργάζεστε σε κάποια εφαρμογή ή σε ένα απλό πρόγραμμα για να λάβετε πληροφορίες από τους χρήστες.
Παράδειγμα τακτικής έκφρασης με σενάρια πραγματικής ζωής
Ας μάθουμε περισσότερα σχετικά με τις κανονικές εκφράσεις χρησιμοποιώντας μερικά παραδείγματα σε πραγματικό χρόνο.
Σενάριο 1: Επικυρώστε εάν η συμβολοσειρά εισόδου αποτελείται από 6 ψηφία χαρακτήρες αλφαβήτου χωρίς κεφαλαία.
Ένα πιο συνηθισμένο σενάριο για κανονική έκφραση είναι η εύρεση και αντιστοίχιση μιας δεδομένης λέξης. Για παράδειγμα, ας πούμε ότι θέλω μια τυχαία αλφαβητική συμβολοσειρά από τον χρήστη και ότι η είσοδος πρέπει να έχει μήκος 6 ψηφίων.
Για να επικυρώσουμε ότι μπορούμε να χρησιμοποιήσουμε μια απλή κανονική έκφραση. Ας γράψουμε ένα πρόγραμμα για να κατανοήσουμε καλύτερα την τακτική έκφραση και τη χρήση με καλύτερο τρόπο.
public static void Main(string() args) { string patternText = @'^(a-zA-Z){6}$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Helios')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Helo')); }
Παραγωγή
Αληθής
Ψευδής
Εξήγηση
Σε αυτό το παράδειγμα, προσπαθούμε να επικυρώσουμε μια συμβολοσειρά εισόδου, για να ελέγξουμε αν περιέχει έξι ψηφία αλφαβητικούς χαρακτήρες. Οι χαρακτήρες μπορούν να είναι και με πεζά και κεφαλαία, οπότε πρέπει να το λάβουμε υπόψη.
Έτσι, εδώ ορίσαμε ένα κανονικό μοτίβο έκφρασης στη μεταβλητή 'patternText' και μετά το περάσαμε στο αντικείμενο regex. Τώρα, οι επόμενες γραμμές κώδικα είναι πολύ απλές, χρησιμοποιήσαμε τη μέθοδο IsMatch για να συγκρίνουμε την κανονική έκφραση και τη συμβολοσειρά εισόδου.
Ας ρίξουμε μια ματιά στην κανονική έκφραση που επινοήσαμε. Η έκφραση (^ (a-zA-Z) {6} $) αποτελείται από 4 διαφορετικά μέρη. '^', '(A-zA-Z)', '{6}' και '$'. Το δεύτερο μέρος δηλώνει τους αντίστοιχους χαρακτήρες, που χρησιμοποιούνται για την εκτέλεση αντιστοίχισης έκφρασης, 'a-z' για πεζά και 'A-Z' για κεφαλαία γράμματα.
Ο χαρακτήρας πρώτου μέρους '^' διασφαλίζει ότι η συμβολοσειρά ξεκινά με ένα μοτίβο που ορίζεται στο δεύτερο μέρος, δηλαδή πεζά και κεφαλαία γράμματα.
Οι σγουρές τιράντες στο τρίτο μέρος καθορίζουν τον αριθμό των χαρακτήρων στη συμβολοσειρά που μπορούν να αναγνωριστούν από το καθορισμένο μοτίβο, δηλαδή 6 σε αυτήν την περίπτωση και το σύμβολο '$' βεβαιωθείτε ότι τελειώνει με το μοτίβο που ορίζεται στο δεύτερο μέρος.
^ (a-zA-Z) {6} $
Σενάριο 2: Χρησιμοποιήστε την Κανονική έκφραση για να επικυρώσετε ότι μια λέξη που ξεκινά με 'Super' και έχει κενό διάστημα μετά από αυτήν, δηλαδή για επικύρωση εάν το 'Super' υπάρχει στην αρχή μιας πρότασης.
Ας υποθέσουμε ότι διαβάζουμε κάποια εισαγωγή χρήστη και πρέπει να διασφαλίσουμε ότι ο χρήστης ξεκινά πάντα την πρότασή του με μια συγκεκριμένη λέξη, αριθμό ή αλφάβητο. Αυτό μπορεί να επιτευχθεί πολύ εύκολα χρησιμοποιώντας μια απλή κανονική έκφραση.
Ας δούμε ένα δείγμα προγράμματος και στη συνέχεια να συζητήσουμε λεπτομερώς πώς να γράψετε αυτήν την έκφραση.
public static void Main(string() args) { string patternText = @'^Supers'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Super man')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Superhero')); }
Παραγωγή
Αληθής
Ψευδής
Εξήγηση
Σε αυτό το παράδειγμα επίσης, χρησιμοποιήσαμε μια παρόμοια ρύθμιση κώδικα όπως και στην πρώτη. Το μοτίβο κανονικής έκφρασης σε αυτό το σενάριο απαιτεί αντιστοίχιση με συνδυασμό λέξεων ή προτάσεων που ξεκινούν με 'Super'.
^ Σούπερ
Έτσι, καθώς θέλουμε να ταιριάξουμε από την αρχή της σειράς λέξεων, θα ξεκινήσουμε βάζοντας το σύμβολο «^» και μετά θα δώσουμε το μοτίβο που θέλουμε να ταιριάξουμε, στην περίπτωση αυτή, «Super». Τώρα το μοτίβο που δημιουργήσαμε '^ Super' μπορεί να ταιριάζει με όλες τις τιμές του σούπερ, ακόμη και του σούπερμαν ή του υπερφυσικού, αλλά δεν θέλουμε απλώς τη λέξη 'Σούπερ'.
Αυτό σημαίνει ότι πρέπει να υπάρχει κενό διάστημα μετά τη λέξη για να σηματοδοτήσει το τέλος της λέξης και την αρχή μιας άλλης λέξης. Για να το κάνουμε αυτό θα προσθέσουμε το σύμβολο ' s' στο μοτίβο και κάνοντας έτσι το τελικό μας μοτίβο ως
^ Σούπερ
Σενάριο 3: Χρησιμοποιήστε την Κανονική έκφραση για να βρείτε έγκυρα ονόματα αρχείων με επέκταση τύπου αρχείου εικόνας.
Ένα άλλο σημαντικό σενάριο σε πραγματικό χρόνο που αντιμετωπίζουν συχνά οι προγραμματιστές είναι η επικύρωση των τύπων αρχείων. Ας υποθέσουμε ότι έχουμε ένα κουμπί μεταφόρτωσης στη διεπαφή χρήστη, το οποίο μπορεί να δεχτεί μόνο επεκτάσεις τύπου αρχείου εικόνας.
Πρέπει να επικυρώσουμε το αρχείο μεταφόρτωσης του χρήστη και να τον ενημερώσουμε σε περίπτωση που ανέβασε λάθος μορφή αρχείου. Αυτό μπορεί εύκολα να επιτευχθεί χρησιμοποιώντας την κανονική έκφραση.
Δίνεται παρακάτω ένα απλό πρόγραμμα για να το ελέγξετε.
public static void Main(string() args) jpeg
Παραγωγή
Αληθής
Αληθής
Αληθής
Ψευδής
Ψευδής
Εξήγηση
Εδώ πρέπει να αντιστοιχίσουμε ένα όνομα αρχείου. Ένα έγκυρο όνομα αρχείου αποτελείται από τρία μέρη ( όνομα αρχείου +. + επέκταση αρχείου ). Πρέπει να δημιουργήσουμε μια κανονική έκφραση για να ταιριάξουμε και τα τρία μέρη. Ας ξεκινήσουμε αντιστοιχίζοντας το πρώτο μέρος, δηλαδή το όνομα του αρχείου. Ένα όνομα αρχείου μπορεί να περιέχει αλφαριθμητικούς και ειδικούς χαρακτήρες.
Όπως συζητήθηκε νωρίτερα το σύμβολο που σημαίνει « w». Επίσης, το όνομα αρχείου μπορεί να έχει έναν ή περισσότερους χαρακτήρες, έτσι θα χρησιμοποιηθεί το σύμβολο '+'. Συνδυάστε τα και παίρνουμε το σύμβολο για το πρώτο μέρος.
(w+)
Ο βραχίονας το διαχωρίζει σε μέρη. Το επόμενο μέρος είναι το σύμβολο κουκκίδων. Καθώς το σύμβολο κουκκίδων έχει το νόημά του σε ένα regex, θα χρησιμοποιήσουμε μια ανάστροφη κάθετο για να του δώσουμε μια κυριολεκτική έννοια. Συνδυάστε και τα δύο και έχουμε τα πρώτα δύο μέρη του regex καλυμμένα.
(w+).
Τώρα, για το τρίτο και τελευταίο μέρος, μπορούμε να ορίσουμε άμεσα τις απαιτούμενες επεκτάσεις αρχείων διαχωρισμένες με '|' Ή σύμβολο. Αυτό μπορεί στη συνέχεια να διαχωριστεί περικλείοντας μέσα σε μια κυκλική αγκύλη. Ένα σύμβολο '$' στο τέλος διασφαλίζει ότι οι επεκτάσεις που ορίζονται βρίσκονται στο τέλος της συμβολοσειράς. Τώρα, ας τα συνδυάσουμε για να πάρουμε την τελική κανονική έκφραση.
(w+).(jpg|png|jpeg|gif)$
Τώρα, εάν το χρησιμοποιήσουμε στο πρόγραμμα, μπορούμε να δούμε ότι ταιριάζει με τη σωστή μορφή και επιστρέφει αληθινό, αλλά με μη έγκυρες μορφές, επιστρέφει ψευδές.
Σενάριο 4: Χρησιμοποιήστε την Κανονική έκφραση για να επικυρώσετε τη μορφή διεύθυνσης ιστότοπου
Ας υποθέσουμε ότι έχουμε μια φόρμα ιστού που δέχεται μια διεύθυνση ιστού ή μια διεύθυνση τομέα. Θέλουμε ο χρήστης να εισαγάγει τη σωστή διεύθυνση ιστού / τομέα ενώ συμπληρώνει τη φόρμα. Για να προσδιορίσετε εάν ο χρήστης έχει εισαγάγει μια σωστή διεύθυνση ιστού, μια κανονική έκφραση μπορεί να είναι αρκετά χρήσιμη.
public static void Main(string() args) { string patternText = @'^www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('www.selenium.dev')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.movie.dont')); }
Παραγωγή
Αληθής
Ψευδής
Εξήγηση
Εδώ, θέλουμε να αντιστοιχίσουμε ένα έγκυρο όνομα τομέα χρησιμοποιώντας μια κανονική έκφραση. Ένα έγκυρο όνομα τομέα ξεκινά με τη συντομογραφία 'www' ακολουθούμενο από μια τελεία (.) Και στη συνέχεια το όνομα του ιστότοπου μετά από αυτήν μια τελεία (.) Και στο τέλος μια επέκταση τομέα.
Έτσι, παρόμοιο με το προηγούμενο σενάριο, θα προσπαθήσουμε να το ταιριάξουμε εν μέρει. Ας ξεκινήσουμε πρώτα με την αντιστοίχιση 'www'. Μέρος. Ξεκινάμε λοιπόν με το αρχικό σύμβολο και μετά ως 'www'. Είναι κάτι που είναι σταθερό, οπότε χρησιμοποιούμε το αρχικό σύμβολο ακολουθούμενο από τις ακριβείς λέξεις που ταιριάζουν.
“^www.”
Τότε θα αρχίσουμε να δουλεύουμε στο δεύτερο μέρος. Το δεύτερο μέρος της διεύθυνσης ιστού μπορεί να είναι οποιοδήποτε αλφαριθμητικό όνομα. Έτσι, εδώ θα χρησιμοποιήσουμε αγκύλες που υπάρχουν στην κατηγορία χαρακτήρων για να καθορίσουμε το εύρος που πρέπει να ταιριάζει. Αφού προσθέσετε το δεύτερο μέρος με το δεύτερο μέρος θα μας δώσετε.
“^www.(a-zA-Z0-9){3,20}”
Εδώ έχουμε προσθέσει επίσης σγουρά τιράντες για να καθορίσουμε το ελάχιστο και το μέγιστο μήκος χαρακτήρων για το όνομα του ιστότοπου. Έχουμε δώσει τουλάχιστον 3 και το μέγιστο των 20. Μπορείτε να δώσετε το ελάχιστο ή μέγιστο μήκος που θέλετε.
Τώρα, έχοντας καλύψει το πρώτο και το δεύτερο μέρος της διεύθυνσης ιστού, μένουμε μόνο με το τελευταίο μέρος, δηλαδή επέκταση τομέα. Είναι αρκετά παρόμοιο με αυτό που κάναμε στο τελευταίο σενάριο, θα ταιριάξουμε άμεσα με τις επεκτάσεις τομέα χρησιμοποιώντας το OR και περικλείοντας κάθε έγκυρη επέκταση τομέα μέσα στην κυκλική αγκύλη.
Έτσι, αν προσθέσουμε όλα αυτά μαζί, θα έχουμε μια πλήρη κανονική έκφραση για να ταιριάζει με οποιαδήποτε έγκυρη διεύθυνση ιστού.
www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$
Σενάριο 5: Χρησιμοποιήστε την Κανονική έκφραση για να επικυρώσετε μια μορφή αναγνωριστικού email
Ας υποθέσουμε ότι έχουμε μια φόρμα σύνδεσης στην ιστοσελίδα μας, η οποία ζητά από τους χρήστες να εισάγουν τη διεύθυνση ηλεκτρονικού ταχυδρομείου τους. Για προφανείς λόγους, δεν θα θέλουμε η φόρμα μας να προχωρήσει περαιτέρω με μη έγκυρες διευθύνσεις ηλεκτρονικού ταχυδρομείου. Για να επικυρώσουμε εάν η διεύθυνση email που έχει εισαγάγει ο χρήστης είναι σωστή ή όχι, μπορούμε να χρησιμοποιήσουμε μια κανονική έκφραση.
Δίνεται παρακάτω ένα απλό πρόγραμμα για την επικύρωση μιας διεύθυνσης email.
public static void Main(string() args) { string patternText = @'^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('software_test123@gmail.com')); Console.WriteLine(reg.IsMatch('Special.Char@yahoo.co.in')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.mo@vie.dont')); }
Παραγωγή
Αληθής
Αληθής
Ψευδής
Εξήγηση
Μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου περιέχει αλφάβητα, αριθμούς και ορισμένους ειδικούς χαρακτήρες όπως κουκκίδες (.), Παύλα (-) και κάτω παύλες (_) ακολουθούμενες από το σύμβολο '@' που ακολουθείται από το όνομα τομέα και την επέκταση τομέα.
Έτσι, μπορούμε να χωρίσουμε τη διεύθυνση email σε τέσσερα μέρη, δηλαδή το αναγνωριστικό email, το σύμβολο '@', το όνομα τομέα και το τελευταίο είναι η επέκταση τομέα.
Ας ξεκινήσουμε γράφοντας μια κανονική έκφραση για το πρώτο μέρος. Μπορεί να είναι αλφαριθμητικός με ορισμένους ειδικούς χαρακτήρες. Ας υποθέσουμε ότι έχουμε μέγεθος έκφρασης που κυμαίνεται από 5 έως 25 χαρακτήρες. Παρόμοια με το πώς το γράψαμε νωρίτερα (στο σενάριο ηλεκτρονικού ταχυδρομείου), μπορούμε να βρούμε την ακόλουθη έκφραση.
^(a-zA-Z0-9._-){5,25}
Τώρα, μεταβαίνοντας στο δεύτερο μέρος. Είναι σχετικά εύκολο καθώς πρέπει να ταιριάσουμε μόνο ένα σύμβολο, δηλαδή '@'. Η προσθήκη της στην παραπάνω έκφραση μας δίνει.
^(a-zA-Z0-9._-){5,25}.@
Η μετάβαση στο τρίτο μέρος, δηλαδή το όνομα τομέα θα είναι πάντα μια σειρά πεζών αλφαβητικών χαρακτήρων. Αν θέλετε μπορείτε επίσης να συμπεριλάβετε αριθμητικούς ή κεφαλαίους αλφαβητικούς χαρακτήρες, αλλά για αυτό το σενάριο, θα πάμε με πεζά γράμματα.
Εάν προσθέσουμε την έκφραση για πεζά γράμματα με μήκος που κυμαίνεται από 2 έως 12 χαρακτήρες, τότε θα έχουμε την ακόλουθη έκφραση.
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}
Τώρα, μένει με την έκφραση για επέκταση τομέα, παρόμοιο με το τέταρτο σενάριο, θα χειριστούμε ορισμένες συγκεκριμένες επεκτάσεις τομέα. Αν θέλετε μπορείτε να προσθέσετε περισσότερα από αυτά περικλείοντάς τα μέσα σε μια κυκλική αγκύλη και χωρίζοντάς τα με ένα «|» σύμβολο.
Η ενοποίηση αυτής της έκφρασης με την προηγούμενη έκφραση θα μας δώσει την τελική μας τιμή έκφρασης για επικύρωση μέσω email.
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)
συμπέρασμα
Σε αυτό το σεμινάριο, μάθαμε ποια είναι η κανονική έκφραση μαζί με τη σύνταξη / σύμβολα που χρησιμοποιούνται για να δηλώσουν, κατασκευάζουμε μια κανονική έκφραση. Η κανονική έκφραση επιτρέπει στο χρήστη να ταιριάξει μια συμβολοσειρά με ένα συγκεκριμένο μοτίβο.
Αυτό είναι αρκετά χρήσιμο σε καταστάσεις που απαιτούν γρήγορη επικύρωση της εισαγωγής, όπως όταν ένας χρήστης εισάγει τη διεύθυνση email ή τον αριθμό τηλεφώνου του, το regex μπορεί να χρησιμοποιηθεί για να επικυρώσει γρήγορα τη μορφή και να ενημερώσει τον χρήστη σχετικά με το ζήτημα εάν ο χρήστης έχει εισαγάγει λάθος μορφή.
πώς να φτιάξετε μια σειρά από χορδές
Μάθαμε επίσης να αντιμετωπίζουμε διαφορετικά σενάρια που μπορούν να χρησιμοποιηθούν για μια ποικιλία διαφορετικών εφαρμογών. Εξετάσαμε τη διαδικασία βήμα προς βήμα για να γράψουμε εκφράσεις για αντιστοίχιση λέξεων, αλφαβήτων, διευθύνσεων ιστότοπου, αναγνωριστικών email, ακόμη και τύπων αρχείων και επεκτάσεων.
Αυτά τα σενάρια είναι αρκετά χρήσιμα στην επικύρωση σε πραγματικό χρόνο των εισόδων χρήστη χωρίς να γράφετε πολλές γραμμές κώδικα και έτσι βοηθάτε στην εξοικονόμηση χρόνου και στη μείωση της πολυπλοκότητας. Αυτά τα παραδείγματα έχουν χρησιμοποιηθεί για να καθοδηγήσουν τον χρήστη να δημιουργήσει το δικό του σύνολο τυπικών εκφράσεων και έτσι να τους βοηθήσει να χειριστούν πολλά άλλα διαφορετικά σενάρια.
Το Regex μπορεί να είναι απλό, όπως η χρήση αλφαβήτου ή αριθμών για να ταιριάζει με μια δεδομένη σειρά χαρακτήρων ή σύνθετων, χρησιμοποιώντας έναν συνδυασμό ειδικών χαρακτήρων, ποσοτικοποιητών, κατηγοριών χαρακτήρων κ.λπ. για την επικύρωση σύνθετων μορφών ή για αναζήτηση συγκεκριμένου μοτίβου στη σειρά χαρακτήρων.
Με λίγα λόγια, μια κανονική έκφραση είναι αρκετά ισχυρό εργαλείο για έναν προγραμματιστή και βοηθά στη μείωση του όγκου του κώδικα που απαιτείται για την πραγματοποίηση μιας αντιστοίχισης δεδομένων ή μιας εργασίας επικύρωσης.
=> Δείτε ΟΛΟΥΣ τα C # Tutorials εδώ.
Συνιστώμενη ανάγνωση
- C # String Tutorial - Μέθοδοι συμβολοσειράς με παραδείγματα κώδικα
- C # Τυχαίος αριθμός και C # Τυχαία γεννήτρια συμβολοσειρών με παραδείγματα κώδικα
- C ++ regex Tutorial: Κανονικές εκφράσεις στο C ++ με παραδείγματα
- MongoDB Regular Expression $ regex με Παράδειγμα
- Εκπαιδευτικό πρόγραμμα Java Regex με παραδείγματα κανονικής έκφρασης
- Τρόπος χρήσης των τυπικών εκφράσεων Unix
- Χρήση Post Processor In JMeter (Regular Expression Extractor)
- Εκμάθηση συμβολοσειράς Java | Μέθοδοι συμβολοσειράς Java με παραδείγματα