Κάρτα αναφοράς βασικών regex
Μια κανονική έκφραση (regex) είναι ένα μοτίβο που ταιριάζει κείμενο. Κάθε σύμβολο, που λέγεται token, αλλάζει τη συμπεριφορά του μοτίβου. Ο πίνακας παρακάτω παραθέτει τα συνηθέστερα σύμβολα με απλό νόημα και ένα μικρό παράδειγμα προς αντιγραφή.
| Σύμβολο | Σημασία | Παράδειγμα |
|---|---|---|
| . | Matches any single character except newline. | a.c matches abc, a c |
| * | Matches the preceding token zero or more times. | ab* matches a, abb |
| + | Matches the preceding token one or more times. | ab+ matches ab, abb |
| ? | Makes the preceding token optional (zero or one). | colou?r matches color, colour |
| [] | Character set: matches any one character inside. | [aeiou] matches any vowel |
| [^] | Negated set: matches any character NOT inside. | [^0-9] matches any non-digit |
| \d | Matches any digit (0-9). | \d+ matches 42, 007 |
| \w | Matches any word character (a-z, A-Z, 0-9, _). | \w+ matches hello_1 |
| \s | Matches any whitespace (space, tab, newline). | a\sb matches a b |
| ^ | Anchors the match to the start of a line/string. | ^Hello matches start of string |
| $ | Anchors the match to the end of a line/string. | world$ matches end of string |
| | | Alternation: matches the pattern on either side. | cat|dog matches cat or dog |
| () | Groups a sub-pattern (and captures it). | (ab)+ matches ab, abab |
| {n,m} | Quantifier: match the preceding token n to m times. | a{2,4} matches aa, aaaa |
| (?i) | Inline flag: makes the pattern case-insensitive. | (?i)hello matches HELLO |
Σημειώσεις
- Οι περισσότερα σύμβολα χάνουν το ειδικό τους νόημα μέσα σε μια κλάση [ ]. Για παράδειγμα, το . μέσα σε [] ταιριάζει απλώς με μια κανονική τελεία.
- Η κάθετος (\) είναι ο χαρακτήρας διαφυγής: μετατρέπει ένα ειδικό σύμβολο σε κυριολεκτικό και το αντίστροφο.
- Οι μηχανές διαφέρουν: Python, JavaScript, PCRE και Golang μοιράζονται τα περισσότερα σύμβολα, αλλά οι σημαίες και το look-around διαφέρουν.
Συχνές ερωτήσεις
- Με τι ταιριάζει η τελεία (.) ;
- Εξ ορισμού η τελεία ταιριάζει με οποιοδήποτε χαρακτήρα εκτός από νέα γραμμή. Για να ταιριάξει κυριολεκτική τελεία, πρέπει να την αποφύγετε ως \.
- Ποια είναι η διαφορά μεταξύ * και + ;
- Ο αστερίσκος * ταιριάζει το προηγούμενο σύμβολο μηδέν ή περισσότερες φορές, οπότε το 'ab*' ταιριάζει και με 'a'. Το σύμβολο + απαιτεί τουλάχιστον ένα, ταιριάζει με 'ab' αλλά όχι μόνο με 'a'.
- Πώς ταιριάζω ένα ψηφίο ή έναν χαρακτήρα λέξης;
- Χρησιμοποιήστε το \d για οποιοδήποτε ψηφίο (0-9) και το \w για οποιονδήποτε χαρακτήρα λέξης (γράμματα, ψηφία, κάτω παύλα). Οι αρνήσεις είναι \D και \W.
- Τι κάνουν τα ^ και $ ;
- Το ^ αγκυρώνει την ταίριασμα στην αρχή της συμβολοσειράς ή γραμμής· το $ στο τέλος. Μαζί, το ^μοτίβο$ εξαναγκάζει ολόκληρη τη συμβολοσειρά να ταιριάξει.