Γρήγορο εγχειρίδιο σύνταξης κανονικών εκφράσεων

Οι κανονικές εκφράσεις, γνωστές και ως εκφράσεις κανόνων, είναι ένα μοτίβο κειμένου που χρησιμοποιείται συνήθως για αναζήτηση, αντικατάσταση και έλεγχο κειμένου. Περιλαμβάνουν κυρίως τα γράμματα από a έως z και ορισμένα ειδικά μετα-χαρακτηριστικά. Η εφαρμογή των κανονικών εκφράσεων είναι εξαιρετικά ευρεία, αρχικά διαδόθηκε μέσω του Unix και στη συνέχεια χρησιμοποιείται ευρέως σε γλώσσες όπως Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby, και Python. Η εκμάθηση κανονικών εκφράσεων είναι στην πραγματικότητα η εκμάθηση ενός πολύ ευέλικτου τρόπου λογικής σκέψης, ώστε να επιτευχθεί έλεγχος συμβολοσειρών με γρήγορες και απλές μεθόδους.
Κανονικός χαρακτήρας Περιγραφή
\ Σηματοδοτεί τον επόμενο χαρακτήρα ως ειδικό χαρακτήρα, ή ως χαρακτήρα αναφοράς, ή ως οπισθοαναφορά, ή ως οκταδική απόδραση. Για παράδειγμα, “n" ταιριάζει με τον χαρακτήρα "n". "\n" ταιριάζει με έναν χαρακτήρα αλλαγής γραμμής. Η ακολουθία "\\" ταιριάζει με "\" ενώ "\(" ταιριάζει με "(".
^ Ταιριάζει με την αρχική θέση της εισαγωγής συμβολοσειράς. Εάν έχει οριστεί η ιδιότητα Multiline του αντικειμένου RegExp, το ^ ταιριάζει επίσης με τη θέση μετά το“\n" ή "\r".
$ Ταιριάζει με την τελική θέση της εισαγωγής συμβολοσειράς. Εάν έχει οριστεί η ιδιότητα Multiline του αντικειμένου RegExp, το $ ταιριάζει επίσης με τη θέση πριν το“\n" ή "\r".
* Ταιριάζει με την πρόταση που προηγείται μηδέν ή πολλές φορές. Για παράδειγμα, zo* μπορεί να ταιριάζει με “z" καθώς και με "zoo". Το * ισοδυναμεί με {0,}.
+ Ταιριάζει με την πρόταση που προηγείται μία ή περισσότερες φορές. Για παράδειγμα, “zo+" μπορεί να ταιριάζει με "zo" καθώς και με "zoo", αλλά δεν μπορεί να ταιριάζει με "z". Το + ισοδυναμεί με {1,}.
? Ταιριάζει με την πρόταση που προηγείται μηδέν ή μία φορά. Για παράδειγμα, “do(es)?" μπορεί να ταιριάζει με "does" ή με "do" από το "does". Το ? ισοδυναμεί με {0,1}.
{n} n είναι ένας μη αρνητικός ακέραιος. Ταιριάζει με συγκεκριμένοn φορές. Για παράδειγμα, “o{2}" δεν μπορεί να ταιριάζει με "Bob" στην "o", αλλά μπορεί να ταιριάζει με "food" στα δύο o.
{n,} n είναι ένας μη αρνητικός ακέραιος. Τουλάχιστον ταιριάζει n φορές. Για παράδειγμα, “o{2,}" δεν μπορεί να ταιριάζει με "Bob" στην "o", αλλά μπορεί να ταιριάζει με "foooood" σε όλα τα o. "o{1,}" ισοδυναμεί με "o+". "o{0,}" ισοδυναμεί με "o*".
{n,m} m και n είναι και οι δύο μη αρνητικοί ακέραιοι, όπου n<=m. Ελάχιστα ταιριάζει με n φορές και το πολύ ταιριάζει με m φορές. Για παράδειγμα, “o{1,3}" θα ταιριάζει με τους τρεις πρώτους o στο "fooooood". "o{0,1}" ισοδυναμεί με "o?". Σημειώστε ότι δεν πρέπει να υπάρχουν κενά μεταξύ του κόμματος και των δύο αριθμών.
? Όταν αυτός ο χαρακτήρας ακολουθεί οποιονδήποτε άλλο περιοριστή (*, +, ?, {n}, {n,}, {n,m}), το ταίριασμα είναι μη απληστία. Η μη απληστία ταιριάζει με τον αναζητούμενο χαρακτήρα όσο το δυνατόν λιγότερο, ενώ το προεπιλεγμένο απληστία εναρμονίζεται με τον αναζητούμενο χαρακτήρα όσο το δυνατόν περισσότερο. Για παράδειγμα, για τη συμβολοσειρά “oooo", "o+?" θα ταιριάζει με ένα μόνο "o", ενώ "o+" θα ταιριάζει με όλα τα "o".
. Ταιριάζει με οποιονδήποτε μόνο χαρακτήρα εκτός από “\n". Για να ταιριάζετε με οποιονδήποτε χαρακτήρα που περιλαμβάνει "\n", χρησιμοποιήστε ένα μοτίβο όπως "(.|\n)".
(pattern) Ταιριάζει με το pattern και αποκτά αυτή την ταύτιση. Η αποκτηθείσα ταύτιση μπορεί να αποκτηθεί από το σύνολο Matches που προκύπτει, χρησιμοποιώντας το υποσύνολο SubMatches σε VBScript και το $0…$9 χαρακτηριστικό σε JScript. Για να ταιριάξετε με τον χαρακτήρα παρένθεσης, χρησιμοποιήστε “\(" ή "\)".
(?:pattern) Ταιριάζει με το pattern αλλά δεν αποκτά την ταύτιση, δηλαδή είναι μια μη αποκτηθείσα ταύτιση και δεν αποθηκεύεται για μελλοντική χρήση. Αυτό είναι χρήσιμο όταν η χρήση του ή χαρακτήρα “(|)" για τη σύνθεση των διαφόρων τμημάτων ενός προτύπου. Για παράδειγμα, "industr(?:y|ies)" είναι μια πιο σύντομη έκφραση από "industry|industries".
(?=pattern) Θετική προεπισκόπηση, ταιριάζει στην αρχή της αναζητούμενης συμβολοσειράς που ταιριάζει στο pattern. Είναι μια μη αποκτηθείσα ταύτιση, δηλαδή, αυτή η ταύτιση δεν χρειάζεται να αποκτηθεί για μελλοντική χρήση. Για παράδειγμα, “Windows(?=95|98|NT|2000)" μπορεί να ταιριάζει με το "Windows" στο "Windows2000", αλλά δεν μπορεί να ταιριάζει με το "Windows" στο "Windows3.1". Η προεπισκόπηση δεν καταναλώνει χαρακτήρες, η οποία σημαίνει ότι, μετά από μια ταύτιση, η αναζήτηση για την επόμενη ταύτιση αρχίζει αμέσως μετά την τελευταία ταύτιση και όχι από τους χαρακτήρες που περιλαμβάνονται στην προεπισκόπηση.
(?!pattern) Θετική αρνητική προεπισκόπηση, ταιριάζει στην αρχή της αναζητούμενης συμβολοσειράς που δεν ταιριάζει στο pattern. Είναι μια μη αποκτηθείσα ταύτιση, δηλαδή, αυτή η ταύτιση δεν χρειάζεται να αποκτηθεί για μελλοντική χρήση. Για παράδειγμα, “Windows(?!95|98|NT|2000)" μπορεί να ταιριάξει με το "Windows" στο "Windows3.1", αλλά δεν μπορεί να ταιριάσει με το "Windows" στο "Windows2000". Η προεπισκόπηση δεν καταναλώνει χαρακτήρες, δηλαδή μετά από μια ταύτιση, η αναζήτηση για την επόμενη ταύτιση ξεκινά αμέσως μετά την τελευταία ταύτιση και όχι από τους χαρακτήρες που περιλαμβάνονται στην προεπισκόπηση.
(?<=pattern) Αρνητική θετική προεπισκόπηση, παρόμοια με την θετική προεπισκόπηση απλώς με αντίθετη κατεύθυνση. Για παράδειγμα, “(?<=95|98|NT|2000)Windows" μπορεί να ταιριάζει με το "2000Windows" στο "Windows", αλλά δεν μπορεί να ταιριάξει με το "3.1Windows" στο "Windows".
(?<!pattern) Αρνητική αρνητική προεπισκόπηση, παρόμοια με την θετική αρνητική προεπισκόπηση απλώς με αντίθετη κατεύθυνση. Για παράδειγμα “(?<!95|98|NT|2000)Windows" μπορεί να ταιριάζει με το "3.1Windows" στο "Windows", αλλά δεν μπορεί να ταιριάζει με το "2000Windows" στο "Windows".
x|y Ταιριάζει είτε με x είτε με y. Για παράδειγμα, “z|food" μπορεί να ταιριάζει με "z" ή "food". "(z|f)ood" ταιριάζει με "zood" ή "food".
[xyz] Σύνολο χαρακτήρων. Ταιριάζει με οποιονδήποτε χαρακτήρα που περιλαμβάνεται. Για παράδειγμα, “[abc]" μπορεί να ταιριάζει με "plain" σε "a".
[^xyz] Αρνητικό σύνολο χαρακτήρων. Ταιριάζει με οποιονδήποτε χαρακτήρα που δεν περιλαμβάνεται. Για παράδειγμα, “[^abc]" μπορεί να ταιριάζει με "plain" σε "p".
[a-z] Εύρος χαρακτήρων. Ταιριάζει με οποιονδήποτε χαρακτήρα εντός της καθορισμένης γκάμας. Για παράδειγμα, “[a-z]" μπορεί να ταιριάζει με οποιονδήποτε μικρό γράμμα από "a" έως "z".
[^a-z] Αρνητικό εύρος χαρακτήρων. Ταιριάζει με οποιονδήποτε χαρακτήρα που δεν είναι στην καθορισμένη γκάμα. Για παράδειγμα, “[^a-z]" μπορεί να ταιριάζει με οποιονδήποτε χαρακτήρα που δεν είναι στην γκάμα από "a" έως "z".
\b Ταιριάζει με ένα όριο λέξης, δηλαδή το σημείο μεταξύ μιας λέξης και ενός διαστήματος. Για παράδειγμα, “er\b" μπορεί να ταιριάζει με το "never" σε "er", αλλά δεν μπορεί να ταιριάζει με το "verb" σε "er".
\B Ταιριάζει με ένα μη όριο λέξης. “er\B" μπορεί να ταιριάζει με το "verb" σε "er", αλλά δεν μπορεί να ταιριάζει με το "never" σε "er".
\cx Ταιριάζει με τον ελεγκτικό χαρακτήρα που καθορίζεται από τον x. Για παράδειγμα, \cM ταιριάζει με έναν Control-M ή χαρακτήρα επιστροφής. Η αξία του x πρέπει να είναι είτε ένα από A-Z είτε α-z. Διαφορετικά, το c θεωρείται ότι είναι ένας απλός χαρακτήρας “c".
\d Ταιριάζει με έναν αριθμητικό χαρακτήρα. Ισοδυναμεί με [0-9].
\D Ταιριάζει με έναν μη αριθμητικό χαρακτήρα. Ισοδυναμεί με [^0-9].
\f Ταιριάζει με έναν χαρακτήρα αλλαγής σελίδας. Ισοδυναμεί με \x0c και \cL.
\n Ταιριάζει με έναν χαρακτήρα αλλαγής γραμμής. Ισοδυναμεί με \x0a και \cJ.
\r Ταιριάζει με έναν χαρακτήρα επιστροφής. Ισοδυναμεί με \x0d και \cM.
\s Ταιριάζει με οποιονδήποτε λευκό χαρακτήρα, συμπεριλαμβανομένων κενών, ταυ ή αλλαγής σελίδας κ.λπ. Ισοδυναμεί με [ \f\n\r\t\v].
\S Ταιριάζει με οποιονδήποτε μη λευκό χαρακτήρα. Ισοδυναμεί με [^ \f\n\r\t\v].
\t Ταιριάζει με ένα χαρακτήρα ταυ. Ισοδυναμεί με \x09 και \cI.
\v Ταιριάζει με ένα κατακόρυφο ταυ. Ισοδυναμεί με \x0b και \cK.
\w Ταιριάζει με οποιονδήποτε χαρακτήρα λέξης, συμπεριλαμβανομένων των κάτω παυλών. Ισοδυναμεί με“[A-Za-z0-9_]".
\W Ταιριάζει με οποιονδήποτε μη χαρακτήρα λέξης. Ισοδυναμεί με“[^A-Za-z0-9_]".
\xn Ταιριάζει με n, όπου n είναι μια δεκαεξαδική απόδραση. Η δεκαεξαδική απόδραση πρέπει να έχει δύο ψηφία. Για παράδειγμα, “\x41" ταιριάζει με "A". "\x041" είναι ίσο με "\x04&1". Οι κανονικές εκφράσεις μπορούν να χρησιμοποιήσουν την κωδικοποίηση ASCII.
\num Ταιριάζει με num, όπου num είναι ένας θετικός ακέραιος. Αναφορά στην αποκτηθείσα ταύτιση. Για παράδειγμα, “(.)\1" ταιριάζει με δύο συνεχόμενους ίδιους χαρακτήρες.
\n Δηλώνει μια οκταδική απόδραση ή μια οπισθοαναφορά. Εάν \n έχει ήδη τουλάχιστον n αποκτημένες υποεκφράσεις, τότε n είναι οπισθοαναφορά. Διαφορετικά, εάν n είναι οκταδικός αριθμός (0-7), τότε n είναι ένα οκταδικό απόσπασμα.
\nm Δηλώνει μια οκταδική απόδραση ή μια οπισθοαναφορά. Εάν \nm έχει τουλάχιστον nm αποκτημένες υποεκφράσεις, τότε nm είναι μια οπισθοαναφορά. Εάν \nm έχει τουλάχιστον n αποκτημένες, τότε n είναι μια οπισθοαναφορά που ακολουθείται από το σταθερό χαρακτήρα m. Εάν καμία από τις προηγούμενες συνθήκες δεν ισχύει, εάν n και m είναι και οι δύο οκταδικοί αριθμοί (0-7), τότε\nm θα ταιριάζει με το οκταδικό απόσπασμα nm.
\nml Εάν n είναι οκταδικός αριθμός (0-3) και m και l είναι και οι δύο οκταδικοί αριθμοί (0-7), τότε ταιριάζει με το οκταδικό απόσπασμα nml.
\un Ταιριάζει με n, όπου n είναι ένας χαρακτήρας Unicode που αντιπροσωπεύεται από τέσσερα δεκαεξαδικά ψηφία. Για παράδειγμα, \u00A9 ταιριάζει με το σύμβολο copyright (©).
Συνηθισμένες κανονικές εκφράσεις
Όνομα χρήστη /^[a-z0-9_-]{3,16}$/
Κωδικός πρόσβασης /^[a-z0-9_-]{6,18}$/
Κωδικός πρόσβασης 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (Σχηματίζεται από αριθμούς/μεγάλους χαρακτήρες/μικρούς χαρακτήρες/σημεία στίξης, όλα απαραίτητα, τουλάχιστον 8 χαρακτήρες)
Δεκαεξαδική τιμή /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Ηλεκτρονική διεύθυνση /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ ή \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ ή [a-zA-z]+://[^\s]*
Διεύθυνση IP /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ ή ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML Tags /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ ή <(.*)(.*)>.*<\/\1>|<(.*) \/>
Αφαίρεση κώδικα\\Σχόλια (?<!http:|\S)//.*$
Ταιριάξτε δισδιάστατους χαρακτήρες (συμπεριλαμβανομένων των Κινέζων χαρακτήρων) [^\x00-\xff]
Κινέζικοι χαρακτήρες (χαρακτηριστικά) [\u4e00-\u9fa5]
Εύρος Κινέζικων χαρακτήρων στον Κώδικα Unicode /^[\u2E80-\u9FFF]+$/
Κινέζικοι χαρακτήρες και πλήρεις σημειακοί χαρακτήρες [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Ημερομηνία (Έτος-Μήνας-Ημέρα) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Ημερομηνία (Μήνας/Ημέρα/Έτος) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Ώρα (Ώρα:Λεπτό, 24ωρη μορφή) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Σταθερός αριθμός τηλεφώνου στην Κίνα (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Κινητός αριθμός στην Κίνα 1\d{10}
Ταχυδρομικός κώδικας στην Κίνα [1-9]\d{5}
Αριθμός ταυτότητας στην Κίνα (15 ή 18 ψηφία) \d{15}(\d\d[0-9xX])?
Μη αρνητικός ακέραιος (θετικός ακέραιος ή μηδέν) \d+
Θετικός ακέραιος [0-9]*[1-9][0-9]*
Αρνητικός ακέραιος -[0-9]*[1-9][0-9]*
Ακέραιος -?\d+
Δεκαδικός (-?\d+)(\.\d+)?
Κενές γραμμές \n\s*\r ή \n\n(editplus) ή ^[\s\S ]*\n
Αριθμός QQ [1-9]\d{4,}
Λέξεις που δεν περιέχουν abc \b((?!abc)\w)+\b
Ταιριάξτε περιθώρια άσπρου χαρακτήρα ^\s*|\s*$
Συνηθισμένες επεξεργασίες
Ακολουθούν μερικές αντικαταστάσεις για ειδικά κινέζικα (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

Σύντομη αναφορά σύνταξης κανονικών εκφράσεων - Συνηθισμένες τεχνικές και σύνταξη κανονικής έκφρασης

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

Βασική σύνταξη κανονικών εκφράσεων

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

Συνηθισμένες τροποποιήσεις κανονικής έκφρασης

Οι τροποποιήσεις κανονικών εκφράσεων χρησιμοποιούνται για να αλλάξουν τους κανόνες ταιριάσματος κανονικής έκφρασης, οι κοινές τροποποιήσεις περιλαμβάνουν:

Επιθετική και μη επιθετική κατάσταση

Στις κανονικές εκφράσεις, τα ποσοστά είναι από προεπιλογή επιθετικά και θα ταιριάζουν με όσο το δυνατόν περισσότερους χαρακτήρες. Η μη επιθετική κατάσταση χρησιμοποιείται προσθέτοντας ένα ? μετά το ποσοστό, για παράδειγμα:

Υποεκφράσεις και ομάδες

Οι υποεκφράσεις στις κανονικές εκφράσεις ορίζονται με παρένθεση (( )) και χρησιμοποιούνται συχνά για την εξαγωγή τμημάτων από την ταύτιση. Οι ομάδες επιτυγχάνονται μέσω του χαρακτήρα “|”. Για παράδειγμα:

Γρήγορη αναζήτηση κανονικών εκφράσεων

Ακολουθούν οι κανονικές εκφράσεις για γρήγορη αναζήτηση:

Λειτουργία Κανονική έκφραση
Ταιριάξτε με αριθμούς \d
Ταιριάξτε με μη-αριθμούς \D
Ταιριάξτε γράμματα [a-zA-Z]
Ταιριάξτε με οποιονδήποτε χαρακτήρα .
Ταιριάξτε με χαρακτήρες κενών \s

Σκηνές εφαρμογής κανονικής έκφρασης

Οι κανονικές εκφράσεις χρησιμοποιούνται ευρέως στα εξής σενάρια:

Συμβουλές εκμάθησης κανονικών εκφράσεων

Χρησιμοποιήστε αμέσως την κανονική σας αναφορά σύνταξης για να γίνετε πιο αποδοτικοί στη συγγραφή κανονικών εκφράσεων και να ενισχύσετε τη δυνατότητά σας στην επεξεργασία κειμένων!

Τα ίχνη σας:
Επιλέξτε γλώσσα