Τον τελευταίο περίπου μήνα, καλύπτω τις εφαρμογές Συντομεύσεις και Automator σε iOS και macOS, αντίστοιχα. Και οι δύο είναι ισχυροί σταθμοί όσον αφορά την αυτοματοποίηση στο οικοσύστημα της Apple και ξεκινώντας με το macOS Monterey αυτό το φθινόπωρο, οι Συντομεύσεις θα είναι η εφαρμογή αυτοματισμού που θα χρησιμοποιηθεί για όλες τις συσκευές της Apple. Αυτός είναι ο λόγος που ήθελα να περάσω αυτό το άρθρο συζητώντας ένα πολύ ισχυρό θέμα: Χρήση regex με την εφαρμογή Συντομεύσεις.
Ενώ έχω κάποιο υπόβαθρο στην επιστήμη των υπολογιστών και στον προγραμματισμό, κατά κάποιο τρόπο δεν είχα συναντήσει ποτέ το regex. Ίσως το όνομα με τρόμαξε, ή ίσως ήταν ο κώδικας, που είναι από τους λιγότερο ευανάγνωστους κωδικούς που έχω δει ποτέ.
Όποια και αν είναι η περίπτωση, αποφάσισα να εξετάσω περαιτέρω το regex αφού κάλυψα την εφαρμογή Συντομεύσεις τους τελευταίους μήνες. Και αυτό που ανακάλυψα ήταν ότι πολλοί από τους περιορισμούς που αντιμετώπιζα με τις Συντομεύσεις, καθώς και το Automator, μπορούσαν να ξεπεραστούν με το regex.
Με άλλα λόγια, δεν ήταν ότι αυτές οι εφαρμογές δεν είχαν δυνατότητες, αλλά ότι μου έλειπε η εκπαίδευση.
Έτσι, στη σημερινή ανάρτηση, εσείς και εγώ θα μάθουμε μαζί τις λεπτομέρειες του regex. Με αυτόν τον τρόπο, μπορείτε να αξιοποιήσετε στο έπακρο καθεμία από αυτές τις εφαρμογές.
Θα καλύψουμε τα βασικά του regex (ξεκινώντας από αυτό που είναι), τι μπορείτε να κάνετε με αυτό στην εφαρμογή Συντομεύσεις, σε ορισμένους ιστότοπους και πόρους που μπορείτε να χρησιμοποιήσετε εάν δεν θέλετε να μάθετε regex μόνοι σας, και μετά θα πάμε στις βασικές έννοιες και τους μηχανισμούς του regex Γλώσσα.
Εντάξει, ας ξεκινήσουμε!
Περιεχόμενα
-
Τι είναι οι κανονικές εκφράσεις (δηλαδή, regex);
- Πράγματα που μπορείτε να κάνετε με το regex
- Πώς μπορείτε να χρησιμοποιήσετε το regex με την εφαρμογή Συντομεύσεις;
- Χρησιμοποιήστε το regex101.com για να δοκιμάσετε τις τυπικές εκφράσεις σας
- Εάν δεν θέλετε να μάθετε πώς να χρησιμοποιείτε το regex με την εφαρμογή Συντομεύσεις, διαβάστε αυτό
-
Regex για αρχάριους: Ξεκινήστε να χρησιμοποιείτε το regex με Συντομεύσεις
- Τι είναι οι γεύσεις regex;
- Ιστότοποι και αναφορές που θα σας βοηθήσουν να ξεκινήσετε να μαθαίνετε regex με Συντομεύσεις
- Πώς να εκτελέσετε μια βασική αναζήτηση κειμένου χρησιμοποιώντας regex με Συντομεύσεις
- Προσθήκη μεταβλητών στοιχείων στις regex αναζητήσεις σας
- Τα εύρη μπορούν να διευρύνουν την αναζήτησή σας
- Πώς να εξαιρέσετε λέξεις και χαρακτήρες από τις regex αναζητήσεις σας με τις Συντομεύσεις
- Οι χαρακτήρες μπαλαντέρ μπορούν να σας δώσουν περισσότερες επιλογές αναζήτησης
- Χρησιμοποιήστε ποσοτικούς δείκτες για να καθορίσετε το μήκος του κειμένου που αναζητάτε
- Υπάρχουν μερικοί ακόμη ποσοτικοί δείκτες για τους οποίους θα θέλετε να μάθετε
- Αναζήτηση χαρακτήρων στην αρχή και στο τέλος μιας συμβολοσειράς κειμένου
- Αποθηκεύστε συμβολοσειρές κειμένου χρησιμοποιώντας τη συνάρτηση ομαδοποίησης του regex με Συντομεύσεις
-
Και τώρα τι?
- Πώς θα το αναλύατε αυτό;
-
Ξεκινήστε να χρησιμοποιείτε το regex με τις Συντομεύσεις για να μεταφέρετε την αυτοματοποίησή σας στο επόμενο επίπεδο
- Σχετικές αναρτήσεις:
Τι είναι οι κανονικές εκφράσεις (δηλαδή, regex);
Μια τυπική έκφραση, ή "regex", είναι ένα κομμάτι κώδικα που μπορείτε να χρησιμοποιήσετε για να αναζητήσετε ένα κομμάτι κειμένου μέσα σε ένα μεγαλύτερο κομμάτι κειμένου.
Σε περίπτωση που δεν γνωρίζετε, ένα κομμάτι κειμένου μέσα σε ένα άλλο κομμάτι κειμένου ονομάζεται "string" στον προγραμματισμό. Για παράδειγμα, η λέξη «πράσινο» είναι μια σειρά χαρακτήρων από το κείμενο «Φόρεσα πράσινο παντελόνι σήμερα».
Με άλλα λόγια, το regex είναι ένας τρόπος για να εντοπίσετε μια συμβολοσειρά κειμένου σε ένα μεγαλύτερο σώμα κειμένου. Και επειδή το regex είναι γραμμένο σε κώδικα, μπορείτε να το χρησιμοποιήσετε για να εκτελέσετε μερικές πολύ περίπλοκες λειτουργίες.
Για παράδειγμα, εάν θέλετε να αναζητήσετε τη λέξη "email", μπορείτε εύκολα να γράψετε έναν κωδικό regex που αναζητά email.
Ωστόσο, εάν θέλετε να βρείτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου που βρίσκεται μέσα σε μια παράγραφο και δεν γνωρίζετε ακριβώς τι είναι αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, τότε θα χρειαστεί να αναζητήσετε μια συμβολοσειρά κειμένου που έχει τη μορφή ηλεκτρονικού ταχυδρομείου. δηλ. μια συμβολοσειρά που ακολουθεί το "[email προστατευμένο]" μορφή.
Τώρα, ας υποθέσουμε ότι όχι μόνο θέλετε να βρείτε ένα email από μια παράγραφο, αλλά κάθε ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ. Ίσως θέλετε να τα αντιγράψετε γρήγορα κάπου αλλού, να τα ενημερώσετε σε νέα μορφή ή να τα αντικαταστήσετε ώστε να λένε όλα "[email προστατευμένο]“.
Καθώς αποκτάτε ολοένα και μεγαλύτερη ικανότητα και εμπειρία με το regex, θα μπορείτε να κάνετε όλα αυτά τα πράγματα και πολλά άλλα.
![](/f/d24774f5d6b9d0aef689b2251f06b34e.jpg)
Πράγματα που μπορείτε να κάνετε με το regex
Εντάξει, οπότε ίσως τα παραδείγματα με το email που μόλις έδωσα να μην είναι τόσο πρακτικά. Μην ανησυχείτε – απέχει πολύ από το όριο του τι μπορείτε να επιτύχετε χρησιμοποιώντας regex με την εφαρμογή Συντομεύσεις.
Σε γενικές γραμμές, ό, τι μπορεί να κάνει το regex εμπίπτει σε μία από αυτές τις τέσσερις κατηγορίες:
- Βρείτε μια συμβολοσειρά κειμένου σε ένα μεγαλύτερο κομμάτι κειμένου (δηλαδή, αναζήτηση λέξης/συμβολοσειράς/τύπου συμβολοσειράς σε μια σελίδα κειμένου).
- Επιβεβαιώστε ότι μια συμβολοσειρά κειμένου ταιριάζει με τη μορφή που επιθυμείτε (δηλαδή, ελέγχοντας ότι μια συμβολοσειρά κειμένου έχει κεφαλαία/ταξινομηθεί/σημειωθεί σωστά).
- Αντικαταστήστε ή εισαγάγετε κείμενο σε μια συγκεκριμένη περιοχή ενός τμήματος κειμένου.
- Διαχωρίστε μια συμβολοσειρά κειμένου σε καθορισμένα σημεία (π.χ., διαιρέστε ένα κομμάτι κειμένου κάθε φορά που υπάρχει κόμμα).
Το επίπεδο βάθους που μπορείτε να χρησιμοποιήσετε για να αλληλεπιδράσετε με καθεμία από αυτά τα είδη συναρτήσεων και πώς μπορείτε να τις συνδυάσετε καθιστούν το regex ένα απίστευτα ισχυρό εργαλείο για την ανάλυση και το χειρισμό κειμένου.
Πώς μπορείτε να χρησιμοποιήσετε το regex με την εφαρμογή Συντομεύσεις;
Εντάξει, τώρα ελπίζουμε να έχετε μια βασική ιδέα για το σε τι χρησιμοποιείται το regex. Είναι ένας τύπος κώδικα που μπορείτε να χρησιμοποιήσετε για να αναζητήσετε κείμενο, ακόμα κι αν δεν γνωρίζετε ακριβώς τι είναι αυτό το κείμενο.
Πώς σας βοηθάει λοιπόν αυτό στις Συντομεύσεις; Παρόμοια με την προσθήκη σεναρίων στις Συντομεύσεις σας, είναι ένας τρόπος να ξεφύγετε από τους βασικούς αυτοματισμούς (Στείλτε μου μήνυμα όταν ανοίξει η μπροστινή πόρτα) σε πιο προηγμένες επιλογές (Δημιουργώ αυτόματα ένα συμβάν ημερολογίου για τις συσκέψεις μου κάθε φορά που λαμβάνω ένα μήνυμα ηλεκτρονικού ταχυδρομείου για μια σύσκεψη Zoom από την εργασία μου).
Μπορείτε να χρησιμοποιήσετε το regex με τις Συντομεύσεις για να ελέγξετε ότι μια είσοδος είναι σωστή. Για παράδειγμα, εάν δημιουργήσετε μια συντόμευση που λειτουργεί μόνο με διευθύνσεις URL, μπορείτε να χρησιμοποιήσετε το regex στην αρχή της συντόμευσης για να βεβαιωθείτε ότι ο χρήστης εκτελεί την αυτοματοποίηση σε μια διεύθυνση URL.
Μπορείτε να συνδυάσετε το regex με το σενάριο για να δημιουργήσετε ισχυρές συντομεύσεις. Για παράδειγμα, αυτή τη συντόμευση χρησιμοποιεί regex και scripting για να μετατρέψει έναν γραμμωτό κώδικα σε URL για το αγαπημένο σας κατάστημα.
Όταν χρησιμοποιείτε την εφαρμογή Συντομεύσεις σε Mac (το φθινόπωρο του 2021), μπορείτε να χρησιμοποιήσετε το regex για να εκτελέσετε ομαδικές ενέργειες σε ένα κομμάτι κειμένου. Για παράδειγμα, θα μπορούσατε να αντιγράψετε όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου σε μια επιλογή κειμένου ως ταξινομημένη λίστα. Ή, θα μπορούσατε να αντικαταστήσετε όλα τα ονόματα σε ένα έγγραφο με χαρακτήρες "*" για να διασφαλίσετε το απόρρητο.
Θα μπορούσατε ακόμη και να αντιγράψετε ένα σώμα κειμένου από μια εφαρμογή, να το διαμορφώσετε ξανά ώστε να ταιριάζει με τις προτιμήσεις μιας άλλης εφαρμογής και, στη συνέχεια, να το επικολλήσετε σε αυτήν την άλλη εφαρμογή, όλα με ένα μόνο δεξί κλικ.
Με άλλα λόγια, το regex σάς δίνει τον απόλυτο έλεγχο στον χειρισμό κειμένου με την εφαρμογή Συντομεύσεις. Αυτό μπορεί να μην ακούγεται πολύ χρήσιμο στην αρχή, αλλά τώρα που ξέρετε ότι υπάρχει, σίγουρα θα αρχίσετε να παρατηρείτε πόσες Συντομεύσεις θα μπορούσαν να βελτιωθούν από αυτήν τη δυνατότητα. Και θα παρατηρήσετε επίσης ότι πολλές Συντομεύσεις δεν είναι καν δυνατές χωρίς regex.
Χρησιμοποιήστε το regex101.com για να δοκιμάσετε τις τυπικές εκφράσεις σας
Μόλις αρχίσετε να χρησιμοποιείτε το regex με τις Συντομεύσεις, θα αντιμετωπίσετε ένα σημείο απογοήτευσης:
Είναι πραγματικά δύσκολο να δοκιμάσετε τον κωδικό regex σας. Και αυτό δεν είναι μοναδικό για το regex. Το να δοκιμάζετε οτιδήποτε με την εφαρμογή Συντομεύσεις είναι κάπως επώδυνο. Ο μόνος τρόπος για να γίνει αυτό είναι να εκτελέσετε τη Συντόμευση. Αυτή η μέθοδος δεν είναι κακή όταν απλώς δοκιμάζετε τις ενσωματωμένες λειτουργίες Συντομεύσεων.
Αλλά για τη δοκιμή κώδικα, αυτό δεν επιτρέπει τον έλεγχο γραμμής προς γραμμή και δεν προσφέρει πολλά σχόλια.
Για αυτό, θα συνιστούσα να χρησιμοποιήσετε το regex101.com. Είναι ένας ιστότοπος στον οποίο μπορείτε να πληκτρολογήσετε κώδικα regex σε πραγματικό χρόνο. Μπορείτε επίσης να πληκτρολογήσετε κείμενο σε ένα πρόγραμμα επεξεργασίας κειμένου στην ίδια ιστοσελίδα. Καθώς πληκτρολογείτε το καθένα, θα δείτε εάν το regex σας λειτουργεί, γιατί λειτουργεί ή δεν λειτουργεί και θα λάβετε πληροφορίες για τις αντιστοιχίσεις που βρέθηκαν.
![](/f/f30206806290a07903bf6ae46c9584c4.png)
Το regex101.com χρησιμοποιεί διαφορετική γεύση regex από αυτή που υποστηρίζεται από τις Συντομεύσεις (περισσότερα σε ένα λεπτό), αλλά είναι αρκετά κοντά ώστε να μην αντιμετωπίζετε πάρα πολλά προβλήματα.
Η χρήση αυτού του εργαλείου είναι εξαιρετική γιατί μπορείτε να γράψετε το regex σας εκεί πρώτα και μετά να το αντιγράψετε στην εφαρμογή Συντομεύσεις μόλις λειτουργήσει όπως προβλέπεται.
Εάν δεν θέλετε να μάθετε πώς να χρησιμοποιείτε το regex με την εφαρμογή Συντομεύσεις, διαβάστε αυτό
Το καταλαβαίνω – δεν θα θέλουν όλοι να μάθουν πώς να χρησιμοποιούν το regex με τις Συντομεύσεις. Είναι μια δεξιότητα, και αυτό σημαίνει ότι θα απαιτήσει χρόνο και εξάσκηση. Δεν είναι τόσο απλό όσο οι υπόλοιπες λειτουργίες μεταφοράς και απόθεσης της εφαρμογής Συντομεύσεις.
Μην ανησυχείς! Αν και δεν θα μπορείτε να αξιοποιήσετε τόσο πολύ από την εφαρμογή Συντομεύσεις όσο κάποιος που αφιερώνει χρόνο για να μάθει regex, εξακολουθούν να υπάρχουν διαθέσιμες επιλογές για εσάς. Συγκεκριμένα, υπάρχουν ιστότοποι και σελίδες στο διαδίκτυο όπου οι άνθρωποι έχουν δημιουργήσει μια λίστα με δαγκώματα κώδικα regex που μπορείτε να αντιγράψετε και να επικολλήσετε στην εφαρμογή Συντομεύσεις.
Ακολουθούν μερικοί σύνδεσμοι για να ελέγξετε εάν δεν θέλετε να μάθετε regex:
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
- https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
- https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
- http://www.rexegg.com/regex-cookbook.html
Απλώς διαβάστε αυτούς τους συνδέσμους και θα μπορείτε να βρείτε κοινές λύσεις regex στις Συντομεύσεις που θέλετε να δημιουργήσετε. Αυτή δεν θα είναι μια επιλογή χωρίς εκπαίδευση, καθώς θα χρειαστεί λίγος χρόνος για να κατανοήσετε αυτό που κοιτάτε. Αλλά είναι πολύ πιο απλό και ιδανική λύση για κάποιον που δεν έχει το χρόνο να κάνει regex.
Τούτου λεχθέντος, πρέπει να παραδεχτώ ότι το regex δεν είναι πολύ δύσκολο να το μάθεις, ειδικά αν έχεις κάποια εμπειρία με τον κώδικα κελύφους ή τον προγραμματισμό για αρχάριους. Το Regex μου φάνηκε σαν ασυναρτησία στην αρχή, αλλά μετά από μια ώρα ανάγνωσης άρθρων και παιχνιδιού με το regex101.com, μπόρεσα να αρχίσω να γράφω regex για τις Συντομεύσεις μου.
Είναι απλώς ένα θέμα εξοικείωσης - αφού το κοιτάξετε για αρκετή ώρα, θα σταματήσει να φαίνεται τόσο περίεργο. Έτσι, αν έχετε το χρόνο και απλώς φοβάστε, μην είστε!
Regex για αρχάριους: Ξεκινήστε να χρησιμοποιείτε το regex με Συντομεύσεις
Εντάξει, αρκετός πρόλογος! Θα πρέπει να έχετε μια ιδέα για το τι είναι το regex, τι μπορεί να κάνει, γιατί πρέπει να το μάθετε και αρκετές πληροφορίες για να αποφασίσετε αν θέλετε να το μάθετε. Τώρα θα μπούμε στο τσιμπημένο.
Υπάρχει πολύ περιεχόμενο παρακάτω, αλλά μην ανησυχείτε! Αυτό το άρθρο πρόκειται να είναι περισσότερο ένας οδηγός μελέτης. Συνιστώ να περάσετε πάνω από κάθε τμήμα, ώστε να έχετε μια ιδέα για τους μηχανισμούς που χρησιμοποιεί το regex. Αυτό θα σας βοηθήσει επίσης να τυλίξετε το κεφάλι σας γύρω από αυτό, εάν εξακολουθείτε να έχετε σύγχυση σχετικά με το τι είναι το regex.
Αφού ξεπεράσετε τα πράγματα, σας προτείνω να ανοίξετε το regex101.com και να παίξετε με καθένα από τα εργαλεία σε κάθε ενότητα παρακάτω. Αυτό θα σας βοηθήσει να δείτε πώς μοιάζουν οι έννοιες στην πράξη καθώς και να βελτιώσετε τη μνήμη σας. Αφού το κάνετε αυτό, μπορείτε απλώς να αντιμετωπίσετε αυτό το άρθρο ως σημείο αναφοράς – κάτι στο οποίο μπορείτε να επιστρέψετε όταν ξεχάσετε τα κομμάτια του regex.
Εντάξει ας πάμε!
Τι είναι οι γεύσεις regex;
Αρχικά, θα εξετάσουμε τις γεύσεις regex. Μην ανησυχείτε - αυτό δεν θα επηρεάσει την καθημερινή σας χρήση του regex με τις Συντομεύσεις. Είναι κάτι που πρέπει να γνωρίζετε πριν ξεκινήσετε.
Υπάρχουν διαφορετικές εκδόσεις του regex που είναι γνωστές ως "γεεύσεις". Αυτές οι διαφορετικές εκδόσεις εξακολουθούν να είναι πολύ παρόμοιες. Εάν μπορείτε να μάθετε να διαβάζετε και να γράφετε μια γεύση, θα πρέπει να μπορείτε να διαβάσετε οποιαδήποτε από αυτές. Θα υπάρχουν απλώς μικρές διαφορές στον τρόπο με τον οποίο θα πρέπει να μορφοποιηθεί ο κωδικός regex σας.
Στον προγραμματισμό, αυτά τα χαρακτηριστικά μορφοποίησης είναι γνωστά ως "σύνταξη". Είναι ακριβώς ο τρόπος με τον οποίο πρέπει να γράψετε τον κωδικό σας για να γίνει κατανοητός από την εφαρμογή στην οποία τον γράφετε.
Να γιατί έχει σημασία η σύνταξη
«Γεια σου φίλε, πώς περνάει η μέρα σου;»
"Θα πάει φίλε; Γεια σου μέρα πώς»
Και οι δύο προτάσεις έχουν τις ίδιες λέξεις, χαρακτήρες και κενά. Μόνο ένα έχει νόημα, όμως, και αυτό γιατί ακολουθεί τη συμβατική σύνταξη.
Στην κωδικοποίηση, μια γλώσσα προγραμματισμού μπορεί να κατανοήσει την πρώτη έκδοση αλλά όχι τη δεύτερη. Σε μια άλλη γλώσσα προγραμματισμού, ωστόσο, η δεύτερη μπορεί να έχει νόημα, ενώ η πρώτη μοιάζει με ασυναρτησίες. Για κάποιον που μπορεί να μιλήσει αγγλικά, ωστόσο, μπορείτε πιθανώς να κατανοήσετε την πρόθεση και των δύο γραμμών, παρόλο που κάποιος θα χρειαστεί λίγη δουλειά για να καταλάβει το νόημα.
Έτσι είναι (κάπως) οι διαφορετικές γεύσεις του regex. Θα σας φαίνονται όλα λίγο διαφορετικά και λίγο παρόμοια με εσάς. Αλλά πρέπει να χρησιμοποιείτε τη σωστή γεύση για την εφαρμογή που χρησιμοποιείτε, διαφορετικά αυτή η εφαρμογή δεν θα έχει ιδέα τι έχετε γράψει.
Η εφαρμογή Shortcuts κατανοεί τη γεύση του regex στη ΜΕΘ, επομένως αυτή είναι η γεύση που θέλετε να χρησιμοποιήσετε. Ο ιστότοπος regex101.com έχει μερικές διαφορετικές γεύσεις από τις οποίες μπορείτε να επιλέξετε στα αριστερά της σελίδας. Ωστόσο, χρησιμοποιεί το PCRE, το οποίο είναι αρκετά παρόμοιο με τη ΜΕΘ.
Είναι σημαντικό να γνωρίζετε ότι υπάρχουν διαφορετικές γεύσεις του regex γιατί αναμφίβολα θα συναντήσετε διαφορετικές γεύσεις στο διαδίκτυο. Αν βρείτε ένα κομμάτι regex που θέλετε να κλέψετε, αλλά δεν μπορείτε να το κάνετε να λειτουργήσει με τις Συντομεύσεις ή απλά δεν φαίνεται σωστό, ελέγξτε με τι γεύση είναι γραμμένο!
Ιστότοποι και αναφορές που θα σας βοηθήσουν να ξεκινήσετε να μαθαίνετε regex με Συντομεύσεις
Ένα άλλο πράγμα που θέλω να καλύψω προτού αρχίσουμε να εξερευνούμε τους πραγματικούς μηχανισμούς της γραφής regex είναι οι πόροι. Δεν ισχυρίζομαι σε καμία περίπτωση ότι αυτή η ανάρτηση είναι μια εξαντλητική πηγή για την εκμάθηση regex. Απλώς προορίζεται να είναι ένα χρήσιμο σημείο εκκίνησης για όσους θέλουν να χρησιμοποιήσουν regex με Συντομεύσεις.
Εάν θέλετε να βουτήξετε βαθύτερα στο regex ή πιστεύετε ότι αυτό το άρθρο δεν σας προσφέρει τη βοήθεια που χρειάζεστε, μπορείτε να δείτε μερικά από αυτά τα άρθρα, οδηγούς και εργαλεία:
- https://regex101.com – Ένας ιστότοπος που σας επιτρέπει να δοκιμάσετε τον κωδικό regex σας σε πραγματικό χρόνο.
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Ένα φύλλο εξαπάτησης για όταν ξεχνάτε τι κάνει ο κάθε χαρακτήρας
- http://www.rexegg.com – Αυτός ο ιστότοπος είναι μια περιεκτική πηγή για να μάθετε όλα όσα πρέπει να γνωρίζετε για το regex. Ελέγξτε αυτό εάν θέλετε να γίνετε ικανοί με το regex.
- https://scottwillsey.com/blog/ios/regex1/ – Αυτή είναι μια σειρά ιστολογίου τεσσάρων μερών σχετικά με τη χρήση του regex με συντομεύσεις. Ακολουθώ μια πολύ διαφορετική προσέγγιση από αυτόν τον οδηγό, επομένως θα πρέπει να είναι μια ωραία συνοδευτική σειρά σε αυτό το άρθρο.
- Το Stack Overflow και το Reddit είναι και οι δύο καλοί ιστότοποι για να μοιράζεστε τις ερωτήσεις και την πρόοδό σας στο regex για να λαμβάνετε συμβουλές και απαντήσεις.
Αυτοί οι πόροι είναι διαφορετικοί από αυτούς που αναφέρονται στο Εάν δεν θέλετε να μάθετε πώς να χρησιμοποιείτε το regex με την εφαρμογή Συντομεύσεις καθώς όλα θα απαιτήσουν από εσάς να αρχίσετε να μαθαίνετε regex. Είναι πιο ολοκληρωμένα, ενώ τα άλλα είναι απλώς σημεία αναφοράς.
Πώς να εκτελέσετε μια βασική αναζήτηση κειμένου χρησιμοποιώντας regex με Συντομεύσεις
Καλώς! Φτάσαμε τώρα στο σημείο που όλοι περίμεναν: Θα μάθουμε τις βασικές αρχές της χρήσης regex με τις Συντομεύσεις.
Ας ξεκινήσουμε με μια βασική αναζήτηση, καθώς αυτό είναι το απλούστερο πράγμα που μπορείτε να κάνετε με το regex. Όπως αναφέρθηκε προηγουμένως, συνιστώ να ανοίξετε το regex101.com σε άλλη καρτέλα, ώστε να μπορείτε να το ακολουθήσετε.
Στην πιο βασική του μορφή, το regex θα αναζητήσει (ή αγώνας) ό, τι πληκτρολογείτε σε αυτό. Για παράδειγμα, αν πληκτρολογούσα Καλώς
Ως κωδικός regex μου, θα έβρισκε κάθε περίπτωση της λέξης "Εντάξει" σε αυτόν τον οδηγό.
Τα πεζά, τα διαστήματα και τα σημεία στίξης έχουν σημασία. Αυτό σημαίνει ότι Καλώς
, καλώς
, Καλώς!
, και εντάξει,
όλα θα έχουν διαφορετικά αποτελέσματα.
Και αυτό είναι! Κάθε φορά που πληκτρολογείτε κάτι σε μια αναζήτηση regex χωρίς να χρησιμοποιείτε ειδικούς χαρακτήρες, το regex θα ταιριάζει με οτιδήποτε ταιριάζει ακριβώς με ό, τι πληκτρολογήσατε.
Υπάρχει ένα πιάσιμο! Ορισμένοι χαρακτήρες στο πληκτρολόγιό σας είναι επίσης ειδικοί regex χαρακτήρες. Αυτό σημαίνει ότι εκτελούν κάποιο είδος λειτουργίας σε κώδικα regex.
ο ?
σύμβολο είναι ένας τέτοιος χαρακτήρας. Χρησιμοποιείται σε κώδικα regex ως ποσοτικοποιητής. Έτσι, αν προσπαθήσετε να αναζητήσετε "Εντάξει;" πληκτρολογώντας Καλώς?
ως κωδικός regex σας, δεν πρόκειται να πάρετε αυτό που θέλετε.
![](/f/70380bc1ab9d1f6457353bcf1efc9dbb.png)
Για να το διορθώσετε αυτό, πρέπει να καθορίσετε ότι θέλετε να χρησιμοποιήσετε το "?" ως συμβολοσειρά, όχι ως ειδικός χαρακτήρας. Για να το κάνετε αυτό για αυτόν τον χαρακτήρα ή για οποιονδήποτε άλλον, απλώς προσθέστε ένα \
σύμβολο ακριβώς πριν από τον χαρακτήρα του οποίου οι ειδικές ιδιότητες θέλετε να ακυρώσετε.
Έτσι, αν θέλετε να αναζητήσετε "Εντάξει;" με το regex, ο κώδικάς σας θα μοιάζει με αυτό:
Καλώς\?
![](/f/330260043d92fb0d7f3c26b25940f87e.png)
Εάν δεν είστε βέβαιοι εάν ένας συγκεκριμένος χαρακτήρας αντιμετωπίζεται ως ειδικός χαρακτήρας από το regex, μπορείτε να ελέγξετε αυτό το φύλλο εξαπάτησης για όλους τους ειδικούς χαρακτήρες στο regex.
Αναζητήστε περισσότερες από μία λέξεις χρησιμοποιώντας τον χαρακτήρα "ή".
Ένα άλλο σημαντικό στοιχείο της αναζήτησης συμβολοσειρών με regex είναι η χρήση της συνάρτησης "ή". Αυτός είναι ένας χαρακτήρας που μπορείτε να τοποθετήσετε ανάμεσα σε δύο λέξεις/χαρακτήρες για να πείτε, "Ταίριαξε αυτό ή αυτό".
Για παράδειγμα, αν θέλω να ψάξω σε ένα σώμα κειμένου για τις λέξεις "εντάξει" και "Εντάξει", θα χρησιμοποιήσω το |
χαρακτήρας. Όπως έτσι:
Εντάξει|εντάξει
Εάν δυσκολεύεστε να το βρείτε |
χαρακτήρα, κρατήστε το μετατόπιση πληκτρολογήστε και πατήστε το \
κλειδί. Είναι πάνω από το ΕΠΙΣΤΡΟΦΗ πλήκτρο στα περισσότερα πληκτρολόγια.
Προσθήκη μεταβλητών στοιχείων στις regex αναζητήσεις σας
Εντάξει, τώρα που ξέρετε πώς είναι το ουδέτερο regex, ήρθε η ώρα να επιλέξετε τον πρώτο σας ιδιαίτερο χαρακτήρα. Αυτές θα ήταν οι αγκύλες, που είναι αυτά τα πράγματα []
.
Ό, τι βάλετε μέσα σε αυτές τις αγκύλες θα θεωρείται μεταβλητό στοιχείο της αναζήτησής σας regex. Μπορείτε να βάλετε όσους χαρακτήρες θέλετε στις αγκύλες, αν και μόνο ένας θα ισχύει ανά αγώνα.
Εντάξει, αυτό ακούγεται λίγο περίπλοκο, αλλά δεν είναι! Δείτε πώς φαίνεται στην πράξη:
-
[Καλώς
θα ταιριάζει απλώς με τη λέξη "Εντάξει". Κάπως άσκοπο. -
[AB]καλά
θα ταιριάζει και με το "Alright" και το "Blright". -
Alr[iouxyz]ght
θα ταιριάζει με τα «Εντάξει», «Εντάξει», «Εντάξει», «Εντάξει» και ούτω καθεξής.
![](/f/a0dc8c0e3d37921a09e81008e9407b11.png)
Μπορείτε να συνδυάσετε χαρακτήρες μέσα σε αγκύλες καθώς και να χρησιμοποιήσετε πολλές αγκύλες στην ίδια γραμμή regex. [AB]r[i1]gh[tuvwxyz]
είναι ένα έγκυρο κομμάτι regex. Ας ελπίσουμε, ωστόσο, να μην φαίνεται τόσο χαοτικό όσο πριν από λίγα λεπτά!
Τα εύρη μπορούν να διευρύνουν την αναζήτησή σας
Το επόμενο κομμάτι regex που θα είναι χρήσιμο με τις Συντομεύσεις είναι το εύρος. Τα εύρη σάς επιτρέπουν να καθορίσετε μια σειρά χαρακτήρων που θα αποδεχτείτε.
Στην προηγούμενη ενότητα, ίσως έχετε παρατηρήσει ότι οι αγκύλες μου περιλάμβαναν πολλά διαδοχικά γράμματα. Η μεγαλύτερη ήταν [tuvwxyz]
. Αυτά τα γράμματα εμφανίζονται στο αλφάβητο με την ίδια σειρά, ακριβώς το ένα δίπλα στο άλλο.
Αυτό σημαίνει ότι θα μπορούσα να χρησιμοποιήσω ένα εύρος αντί να το πληκτρολογήσω. Αυτό θα μοιάζει με αυτό:
Εντάξει[t-z]
Αυτό το κομμάτι του κώδικα regex θα κάνει το ίδιο με Εντάξει[tuvwxyz]
. Είναι απλά πιο τακτοποιημένο και πιο εύκολο να γραφτεί.
Μπορείτε να αντικαταστήσετε το ίδιο εύρος με [a-z]
αν ήθελες να δέχεται οποιοδήποτε πεζό γράμμα από το αλφάβητο. Ή μπορείτε να χρησιμοποιήσετε [0-9]
εάν θέλετε να αποδεχτείτε οποιονδήποτε μονοψήφιο αριθμό.
Μπορείτε επίσης να συνδυάσετε εύρη εντός της ίδιας αγκύλης. Για παράδειγμα, αυτό Alr[i-ux-z]ght
θα δέχεται "Εντάξει", "Εντάξει", "Alrxght" και "Alryght", αλλά δεν θα δέχεται "Εντάξει" ή "Alrvght".
![](/f/0539fe4f5351aeda0a97eb845ed26608.png)
Παρεμπιπτόντως, υπάρχουν και άλλες παραλλαγές της λέξης "Εντάξει" που θα δεχτεί αυτός ο κωδικός και πολλές άλλες που δεν θα κάνει. Αυτή είναι απλώς μια σύντομη επιλογή για να κρατήσουμε τα πράγματα, καλά, σύντομα.
Εάν δυσκολεύεστε να καταλάβετε τι [i-ux-z]
σημαίνει, μπορεί να βοηθήσει να το δούμε γραμμένο ως εξής:
[i-u, x-z]
Αυτή δεν είναι σωστή σύνταξη regex - δεν θα πρέπει να χρησιμοποιείτε κόμμα για να διαχωρίσετε εύρη. Αλλά ελπίζουμε ότι αυτό βοηθάει να γίνει πιο λογικό!
Δεν χρειάζεστε κόμματα στο regex για να διαχωρίσετε εύρη και δεν χρειάζεται να βάζετε εύρη το ένα δίπλα στο άλλο. Μπορείτε να το αλλάξετε σε [i-uabcx-z]
. Αυτό θα δεχόταν τα ίδια εύρη όπως πριν συν τους χαρακτήρες "a", "b" και "c".
Πώς να εξαιρέσετε λέξεις και χαρακτήρες από τις regex αναζητήσεις σας με τις Συντομεύσεις
Εντάξει, τώρα κάπου φτάνουμε! Εάν έχετε ακολουθήσει αυτό το άρθρο μέχρι αυτό το σημείο, θα πρέπει να μπορείτε να δείτε τον παρακάτω κώδικα και να κατανοήσετε σε τι ταιριάζει:
Ap[p-r]le[Tt]ool[BbLF]ox
Εάν μπορείτε να το διαβάσετε, τότε ξέρετε ότι αυτό το κομμάτι του κώδικα regex περιλαμβάνει πολύ πιθανών παραλλαγών της λέξης "AppleToolBox". Τι θα γινόταν λοιπόν αν θέλαμε να μειώσουμε τον αριθμό των παραλλαγών που δέχεται χωρίς να αλλάξουμε το εύρος μας;
Εκεί μπαίνει ο χαρακτήρας «μη». Μοιάζει με αυτό: ^
. Εάν δυσκολεύεστε να το βρείτε στο πληκτρολόγιό σας (όπως έκανα εγώ), κρατήστε το μετατόπιση και πατήστε το 6 πλήκτρο στο πληκτρολόγιό σας.
Για να χρησιμοποιήσετε το ^
χαρακτήρα, τοποθετήστε τον στην αρχή του χαρακτήρα που θέλετε να εξαιρέσετε.
Υπάρχει ένα πιάσιμο! ο ^
Ο χαρακτήρας δεν λειτουργεί εκτός μιας συνάρτησης regex. Δεν μπορείτε απλώς να το τοποθετήσετε μπροστά από το γράμμα "A" για να το αποκλείσετε αυτό το γράμμα από την αναζήτησή σας. Ο κωδικός regex ^ Α
θα αναζητήσει απλώς ένα κεφαλαίο «Α».
Αντίθετα, συνδυάστε το με αγκύλες και άλλους ειδικούς χαρακτήρες regex.
Για παράδειγμα, αν ήθελα να αναζητήσω οποιοδήποτε παράδειγμα της λέξης "Εντάξει" που δεν ξεκινά με το γράμμα "Α", θα χρησιμοποιούσα τον κωδικό [^A]καλά
.
![](/f/8f4e891920940025836893942144d7f6.png)
Μπορείτε να το συνδυάσετε ακόμη και με σειρές! Απλώς τοποθετήστε το στην αρχή της αγκύλης σας και οτιδήποτε βρίσκεται εντός αυτής της αγκύλης, συμπεριλαμβανομένων των περιοχών, θα εξαιρεθεί από την αναζήτησή σας. Όπως έτσι:
![](/f/014ec0a38e4dd32130aae5c9f4adfcaf.png)
Τι γίνεται αν θέλετε να εξαιρέσετε μια συγκεκριμένη λέξη από την αναζήτησή σας;
Δυσκολεύτηκα να βρω αυτές τις πληροφορίες. Ωστόσο, ένας χρήστης Stack Overflow είχε τη λύση και μοιάζει με αυτό:
^(?!(λέξη)$).+$
Απλώς αντικαταστήστε λέξη
με όποια λέξη θέλετε να εξαιρέσετε από την αναζήτησή σας. Όπως έτσι:
![](/f/df96f2f11145f1939f386069b5855cdd.png)
Μπορείτε να διαβάσετε αυτήν την ανάρτηση στο Stack Overflow εδώ εάν θέλετε να μάθετε περισσότερα για τη συγκεκριμένη περίπτωση χρήσης.
Οι χαρακτήρες μπαλαντέρ μπορούν να σας δώσουν περισσότερες επιλογές αναζήτησης
Αυτό μας οδηγεί σε χαρακτήρες μπαλαντέρ. Ο χαρακτήρας μπαλαντέρ, που είναι περίοδος .
, χρησιμοποιείται για την αναπαράσταση οποιουδήποτε μεμονωμένου χαρακτήρα, γραμμή κανένας. Αν απλώς πληκτρολογήσετε .
Ως κωδικός regex με τις Συντομεύσεις, θα επιστρέψει κάθε χαρακτήρα σε ένα σώμα κειμένου ως μεμονωμένη αντιστοίχιση.
![](/f/2a307376eb5a56bd70d7a951ceb220f9.png)
Δεν θα συνιστούσα να το χρησιμοποιήσετε για αυτόν τον σκοπό, φυσικά! Αντίθετα, προτείνω να το χρησιμοποιήσετε στη θέση ενός μεμονωμένου χαρακτήρα σε μια λέξη. Για παράδειγμα, Εντάξει
θα ταιριάζει με τα "Εντάξει", "Alrxght", "Alr
Και λίγο πολύ αυτό είναι! Ο χαρακτήρας μπαλαντέρ είναι αρκετά εύκολο να κατανοηθεί. Ταιριάζει με όλα! Αυτό το καθιστά χρήσιμο για την εύρεση συμβολοσειρών που ταιριάζουν με μια συγκεκριμένη μορφή, ενώ έχουν μοναδικούς χαρακτήρες.
Τα email, για παράδειγμα, όλα θα μοιάζουν αρκετά χωρίς να είναι ίδια. Ο μπαλαντέρ μπορεί να σας βοηθήσει να συνδυάσετε στοιχεία που γνωρίζετε ότι θα υπάρχουν (όπως ".com" και "@") με χαρακτήρες που δεν γνωρίζετε (όπως "my_email567", iCloud ή "Gmail").
Μια άλλη ενδιαφέρουσα περίπτωση χρήσης είναι η χρήση του .
χαρακτήρα για να βρείτε χορδές συγκεκριμένου μήκους.
Για παράδειγμα, αν θέλω να βρω κάθε συμβολοσειρά τεσσάρων χαρακτήρων σε ένα σώμα κειμένου, θα μπορούσα να χρησιμοποιήσω ...
με κενό εκατέρωθεν.
![](/f/9ff1fc4bd52cef0f1a725d174d8c6e83.png)
Και εδώ είναι όλες οι συμβολοσειρές επτά χαρακτήρων στο ίδιο σώμα κειμένου:
![](/f/9bec237750b14a040be3eedbe7681ead.png)
Σημειώστε ότι αυτή δεν είναι η τέλεια μέθοδος για την εύρεση χορδών συγκεκριμένου μήκους. Όπως μπορείτε να δείτε στα παραπάνω παραδείγματα, ορισμένες συμβολοσειρές αντιστοιχίζονται που δεν θα έπρεπε και κάποιες που θα έπρεπε να έχουν αγνοηθεί. Είναι απλώς ενδιαφέρον να θυμάστε ότι μπορείτε να χρησιμοποιήσετε το .
χαρακτήρα για να μετρήσει χαρακτήρες.
Επίσης, λάβετε υπόψη ότι το .
είναι ένας ιδιαίτερος χαρακτήρας στο regex. Αυτό σημαίνει ότι θα χρειαστεί να προσθέσετε ένα \
μπροστά του αν θέλετε να ψάξετε για περιόδους. Αυτό σημαίνει ότι θα πρέπει να χρησιμοποιήσετε Καλώς\.
για να ταιριάζει με το "Εντάξει".
Χρησιμοποιήστε ποσοτικούς δείκτες για να καθορίσετε το μήκος του κειμένου που αναζητάτε
Εντάξει, έτσι μπορείτε να χρησιμοποιήσετε τεχνικά το .
χαρακτήρα για να βρείτε μια συμβολοσειρά που καταλαμβάνει συγκεκριμένο αριθμό χαρακτήρων. Τις περισσότερες φορές, όμως, θα θέλετε να είστε πιο συγκεκριμένοι.
Εκεί μπαίνουν οι ποσοτικοί δείκτες. Οι ποσοτικοί δείκτες σάς επιτρέπουν να καθορίσετε το μήκος της συμβολοσειράς που αναζητάτε όταν χρησιμοποιείτε regex με Συντομεύσεις.
Για παράδειγμα, ας πούμε ότι θέλετε να βρείτε οποιαδήποτε λέξη έχει συγκεκριμένα τρία γράμματα. Για να το προσδιορίσετε, θα θέλετε να χρησιμοποιήσετε αυτές τις αγκύλες:
{}
Όταν τοποθετείτε αυτές τις αγκύλες μετά από αυτές []
αγκύλες, προσδιορίζετε ότι θέλετε μια συμβολοσειρά που ταιριάζει με τον αριθμό των χαρακτήρων μέσα σε αυτό {}
και το εύρος των χαρακτήρων που καθορίζονται σε αυτό []
.
Είμαι βέβαιος ότι δεν έχει πολύ νόημα τώρα, οπότε ας δούμε ένα παράδειγμα!
Ας υποθέσουμε ότι θέλετε να βρείτε οποιαδήποτε χρόνια αναφέρονται σε ένα σώμα κειμένου. Επειδή ένα έτος αποτελείται από τέσσερις αριθμούς (προφανώς όχι κάθε χρόνο από όλες τις εποχές, απλά ακολουθήστε με εδώ), θα μπορούσατε να χρησιμοποιήσετε αυτόν τον κωδικό για να αντιστοιχίσετε έτη σε αυτό το κείμενο:
[0-9]{4}
Αυτός ο κώδικας λέει ότι θέλουμε μια συμβολοσειρά αποτελούμενη από χαρακτήρες από το 0 έως το 9 που αποτελείται συγκεκριμένα από τέσσερις χαρακτήρες. Μπορείτε να δείτε πώς εντοπίζει τη συγκεκριμένη συμβολοσειρά στο παρακάτω στιγμιότυπο οθόνης:
![](/f/82a2e12dfe162ae51afb7a3bbc2ae606.png)
Πρέπει να σημειώσω ότι υπάρχουν ορισμένα ζητήματα με αυτόν τον κωδικό regex και αυτό είναι ότι δεν λαμβάνει υπόψη τα κενά ή τα σημεία στίξης. Έτσι, αν ο κωδικός βρει έναν αριθμό μεγαλύτερο από τέσσερις χαρακτήρες, όπως "12345678", θα βρει τη συμβολοσειρά "1234" και τη συμβολοσειρά "5678".
Για να διορθώσετε αυτό το πρόβλημα, θα θέλατε να προσθέσετε ένα κενό στην αρχή του κώδικα και μια αγκύλη μετά το {4}
που περιέχει ένα άλλο διάστημα, μια τελεία, ένα ερωτηματικό, ένα κόμμα και ένα θαυμαστικό. Με αυτόν τον τρόπο, θα παραβλέψει μακριές συμβολοσειρές αριθμών χωρίς να λείπουν σειρές αριθμών που έχουν σημεία στίξης στο τέλος τους αντί για κενό.
Μπορεί επίσης να θέλετε να χρησιμοποιήσετε ποσοτικούς δείκτες για να καθορίσετε περισσότερα από ένα μήκη συμβολοσειράς. Για παράδειγμα, ίσως θέλω να βρω μια συμβολοσειρά σε μήκος τεσσάρων χαρακτήρων, αλλά και επτά και έντεκα. Να πώς θα μοιάζει:
[a-z]{4,7,11}
Υπάρχουν μερικοί ακόμη ποσοτικοί δείκτες για τους οποίους θα θέλετε να μάθετε
Εντάξει, υπάρχουν ακόμα περισσότεροι ποσοτικοί δείκτες! Αυτοί οι τελευταίοι ποσοτικοί δείκτες είναι για όταν θέλετε να καθορίσετε το μήκος μιας συμβολοσειράς χωρίς να είστε πολύ συγκεκριμένοι.
Για παράδειγμα, ας πούμε ότι θέλετε να βρείτε μια συμβολοσειρά οποιουδήποτε μήκους που μπορεί να ταιριάζει με το regex. Σαν όνομα! Τα ονόματα (στις δυτικές χώρες) ξεκινούν με ένα κεφαλαίο γράμμα και τελειώνουν με μια τυχαία ποσότητα πεζών γραμμάτων, ακολουθούμενα από ένα κενό. Για να βρείτε ένα όνομα, θα γράψετε τον ακόλουθο κώδικα:
[A-Z][a-z]*
[Α-Ω]
καθορίζει ότι ο πρώτος χαρακτήρας της συμβολοσειράς πρέπει να είναι κεφαλαίο. [a-z]*
καθορίζει ότι η υπόλοιπη συμβολοσειρά πρέπει να αποτελείται από πεζά γράμματα, αλλά δεν έχει σημασία πόσα γράμματα ακολουθούν. Και το κενό στο τέλος σημαίνει ότι θα τερματίσει τον αγώνα μόλις βρει ένα κενό στο τέλος των πεζών γραμμάτων.
Ένας χρυσός συνδυασμός στο regex είναι .*
. Αυτό σημαίνει ότι ταιριάζει άπειρα με οποιονδήποτε χαρακτήρα. Με άλλα λόγια, θα ταιριάζει με ολόκληρο το σώμα του κειμένου ως ένα στοιχείο.
Ο επόμενος ποσοτικός δείκτης που θα πρέπει να γνωρίζετε είναι +
. Αυτό είναι ακριβώς όπως *
εκτός από το ότι δεν θα ταιριάζει με μια συμβολοσειρά με μηδέν χαρακτήρες. *
θα ταιριάζει με οποιοδήποτε μήκος συμβολοσειράς, το οποίο περιλαμβάνει συμβολοσειρές που δεν έχουν μήκος. +
Το, από την άλλη πλευρά, χρειάζεται μια συμβολοσειρά με τουλάχιστον έναν ή περισσότερους χαρακτήρες.
Τέλος, υπάρχει το ?
ποσοτικός. Αυτό είναι περίεργο. Καθορίζει ότι μια συμβολοσειρά έχει μήκος μηδέν χαρακτήρων ή μήκος ενός χαρακτήρα. Αυτό είναι - είτε τίποτα είτε μόνο ένα. Αν λοιπόν χρησιμοποιήσετε τον κωδικό [a-z];
με ένα κενό στην αρχή και στο τέλος, θα αναζητήσει μεμονωμένα γράμματα μέσα σε ένα σώμα κειμένου.
Αναζήτηση χαρακτήρων στην αρχή και στο τέλος μιας συμβολοσειράς κειμένου
Πλησιάζουμε στο τέλος του οδηγού μας σχετικά με τη χρήση του regex με τις Συντομεύσεις! Υπάρχουν μόνο δύο ακόμη είδη κώδικα regex που θα χρησιμοποιήσετε με τις Συντομεύσεις.
Οι πρώτοι είναι χαρακτήρες που σας επιτρέπουν να ταιριάξετε συμβολοσειρές με βάση το πώς ξεκινούν ή/και τελειώνουν.
Όταν δεν είναι μέσα σε αγκύλες, το ^
ο ρόλος του χαρακτήρα αλλάζει από το νόημα «αποκλείω» σε «αρχίζει με». Καθορίζει ότι μια συμβολοσειρά πρέπει να ξεκινά με ό, τι θέλετε. Για παράδειγμα, αν γράφεις ^ Α
, που θα ταιριάζει με το γράμμα "A" στις συμβολοσειρές "Alright", "Apple" και "A".
Δεν ταιριάζει με ολόκληρη τη λέξη, όμως. Για αυτό, θα πρέπει να το αλλάξετε σε ^A[A-Za-z]*
. Αυτό θα ταιριάζει με την πρώτη λέξη μιας παραγράφου/συμβολοσειράς, αρκεί αυτή η λέξη να ξεκινά με κεφαλαίο «Α».
Ως δευτερεύουσα σημείωση, μπορείτε να γράψετε [Α-Ζα-ζ]
όπως και [A-z]
. Σημαίνει το ίδιο πράγμα, απλώς βρίσκω ότι το πρώτο είναι λίγο πιο ξεκάθαρο όταν μαθαίνεις.
Για να καθορίσετε το τέλος της συμβολοσειράς, θα θέλετε να χρησιμοποιήσετε το $
χαρακτήρας. Λειτουργεί το ίδιο με το ^
χαρακτήρας. Η μόνη διαφορά είναι ότι το γράφετε στο τέλος μιας αγκύλης/συμβολοσειράς και όχι στην αρχή.
Για παράδειγμα, αν θέλετε να βρείτε συμβολοσειρές/παραγράφους που τελειώνουν με "le", θα χρησιμοποιούσατε τον κωδικό [A-z]*le$
. Αυτό θα ταιριάζει με τα "Table", "apple" και "capable" εφόσον βρίσκονται στο τέλος μιας συμβολοσειράς ή παραγράφου.
Το Regex θα αρνηθεί ακόμη και αυτή την αντιστοίχιση εάν υπάρχει κενό ή σημείο στίξης στο τέλος της συμβολοσειράς. "Τραπέζι." δεν θα αντιστοιχιστεί με αυτόν τον κωδικό.
Για να το διορθώσετε, μπορείτε να λάβετε υπόψη τα σημεία στίξης. Αυτός ο κώδικας αντιπροσωπεύει διάφορες μορφές στίξης και διαστημάτων που θα μπορούσαν να εμφανιστούν στο τέλος μιας συμβολοσειράς, συμπεριλαμβανομένου ενός σημείου στίξης που ακολουθείται από ένα κενό:
[A-z]*(le[\.\?!, ]?[ ]?)$
Αυτός ο κωδικός θα ταιριάζει με "Ικανός", "πίνακας.", "Σταθερός" και "Ικανός; “.
Αποθηκεύστε συμβολοσειρές κειμένου χρησιμοποιώντας τη συνάρτηση ομαδοποίησης του regex με Συντομεύσεις
Καλώς! Φτάσατε στο τέλος του οδηγού AppleToolBox σχετικά με τη χρήση του regex με τις Συντομεύσεις. Απομένει μόνο μια ακόμη συνάρτηση regex για εκμάθηση, και αυτή είναι η ομαδοποίηση.
Η ομαδοποίηση είναι αναμφισβήτητα το πιο σημαντικό χαρακτηριστικό του regex, καθώς είναι αυτό που σας επιτρέπει να κάνετε πράγματα με τον κωδικό regex που γράφετε. Χωρίς αυτό, το regex είναι απλώς μια δυνατότητα αναζήτησης. Μπορεί να σας πει μόνο εάν μια συμβολοσειρά υπάρχει σε ένα μεγαλύτερο σώμα κειμένου, δηλαδή, θα επιστρέψει "αληθές" ή "ψευδές".
Με την ομαδοποίηση, ωστόσο, μπορείτε να αποθηκεύσετε τα αποτελέσματα του regex κώδικα σας. Και αυτό σημαίνει ότι μπορείτε να αντιγράψετε αντιστοιχίσεις, να τις αποθηκεύσετε σε μεταβλητές, να τις αντικαταστήσετε με άλλο κείμενο, να τροποποιήσετε τη μορφοποίησή τους και οτιδήποτε άλλο θέλετε να κάνετε με το regex.
Ευτυχώς, η ομαδοποίηση είναι εξαιρετικά εύκολη! Απλώς βάλτε ό, τι θέλετε να ομαδοποιήσετε σε παρένθεση ()
. Ό, τι βάλετε σε παρένθεση θα αντιμετωπίζεται ως ομάδα.
Εάν βάλετε μια ολόκληρη γραμμή κώδικα regex μέσα σε παρενθέσεις, όπως (.*@.*\..{3})
, τότε αυτή η ομάδα θα απομνημονευθεί από τον κώδικά σας, ο οποίος θα της επιτρέψει να ανακληθεί αργότερα στη γραμμή.
Είναι σημαντικό να χρησιμοποιείτε ομάδες μόνο όποτε χρειάζεται. Δεδομένου ότι είναι αποθηκευμένα στη μνήμη, μπορούν να προκαλέσουν μείωση της απόδοσης του κώδικά σας. Αποθηκεύστε ομάδες όταν τις χρειάζονται!
Μπορείτε επίσης να χρησιμοποιήσετε ομάδες για οργάνωση
Μπορείτε επίσης να χρησιμοποιήσετε ομάδες για να οργανώσετε τον regex κωδικό σας με Συντομεύσεις. Όταν το κάνετε αυτό, η ομάδα μέσα στις παρενθέσεις δεν θα θυμάται απαραίτητα.
Για παράδειγμα, πείτε ότι θέλω να ταιριάξω τη λέξη "Hello", εκτός από το ότι δεν με νοιάζει ποιο είναι το τελευταίο γράμμα. Μπορεί να είναι οποιοδήποτε πεζό ή κεφαλαίο γράμμα ή ακόμα και αριθμός. Τα "Hell3838djdjajaksks" και "Hello" θα πρέπει να υπολογίζονται ως αντιστοιχίες. Η «Κόλαση», από την άλλη πλευρά, δεν πρέπει να μετράται.
Για να λειτουργήσει αυτό, γράφω τον κώδικα Hell[A-z]|[0-9]+
. Αλλά αυτό είναι το αποτέλεσμα που έχω:
![](/f/4119408864de741e8b53817564b59e1a.png)
Ο λόγος που δεν ταιριάζει με τον τρόπο που περίμενα είναι ότι +
εφαρμόζεται μόνο στο [0-9]
υποστήριγμα. Χρειάζομαι να ισχύει και στις δύο αγκύλες.
Επιπλέον, αυτός ο κωδικός λέει ότι θέλω είτε κόλαση[A-z]
ή[0-9]
. Επομένως, ταιριάζει με λέξεις που ξεκινούν με "Hell" και τελειώνουν με ένα γράμμα ή αναζητά οποιεσδήποτε σειρές αριθμών. Αυτό που χρειάζομαι πραγματικά είναι να ταιριάζει με περιπτώσεις της λέξης "Κόλαση" που τελειώνουν με ένα γράμμα ή έναν αριθμό.
Για να το διορθώσω, μπορώ να χρησιμοποιήσω μια ομάδα και να ξαναγράψω τον κώδικα ως Hell([A-z]|[0-9])+
. Τώρα, αναζητά τη λέξη "Κόλαση" ακολουθούμενη από οποιοδήποτε γράμμα ή αριθμό. Και επειδή το +
εφαρμόζεται και στις δύο αγκύλες, μπορεί να είναι οποιοσδήποτε συνδυασμός γραμμάτων και αριθμών, αρκεί να υπάρχει τουλάχιστον ένα γράμμα ή αριθμός.
Όπως μπορείτε να δείτε στο παρακάτω στιγμιότυπο οθόνης, αυτή η ομάδα λύνει το πρόβλημά μου χωρίς απαραίτητα να αποθηκεύει τις πληροφορίες σε αυτήν την ομάδα:
![](/f/2bf0957d091c707996ebe378502d9a45.png)
Και τώρα τι?
Και αυτό είναι! Αυτό είναι σχεδόν όλα όσα θα μπορούσατε να μάθετε για τη χρήση του regex με τις Συντομεύσεις. Ας ελπίσουμε ότι νιώθετε αρκετή αυτοπεποίθηση για να αρχίσετε να πειραματίζεστε με το regex τώρα, ακόμα κι αν δεν ήταν λογικό για εσάς στην αρχή.
Τώρα που γνωρίζετε τα βασικά του regex, είστε έτοιμοι να αρχίσετε να το χρησιμοποιείτε στις Συντομεύσεις σας! Οι συντομεύσεις δέχονται την εισαγωγή regex στις ακόλουθες ενέργειες:
- Κείμενο αντιστοίχισης
- Αντικατάσταση κειμένου
Χρησιμοποιώντας αυτές τις δύο ενέργειες Συντομεύσεων, μπορείτε να εισαγάγετε regex στις Συντομεύσεις σας.
Συνδυάστε το με τις δυνατότητες αυτοματοποίησης των Συντομεύσεων και θα έχετε ένα αρκετά ισχυρό εργαλείο στη διάθεσή σας.
Μπορείτε να χρησιμοποιήσετε το regex για να διευκολύνετε τη μορφοποίηση κειμένου στις Συντομεύσεις, για να αντλήσετε πληροφορίες από μηνύματα ηλεκτρονικού ταχυδρομείου, κείμενα, ιστότοπους, αρχεία και συμβάντα ημερολογίου, δημιουργήστε κείμενο που ακολουθεί μια καθορισμένη μορφή, ελέγξτε ότι η είσοδος έχει εισαχθεί σωστά και περισσότερο.
Για παράδειγμα, πείτε ότι θέλετε να ταιριάξετε για μηνύματα ηλεκτρονικού ταχυδρομείου. Ίσως πρέπει να ελέγξετε ότι μια συμβολοσειρά κειμένου είναι μήνυμα ηλεκτρονικού ταχυδρομείου ή ίσως θέλετε να τραβήξετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου από ένα σώμα κειμένου.
Πώς θα το αναλύατε αυτό;
Λοιπόν, ξέρετε ότι η βασική δομή ενός email θα είναι κάποιος συνδυασμός γραμμάτων, αριθμών και χαρακτήρων, ακολουθούμενος από το σύμβολο "@", στη συνέχεια ακολουθούμενο από το όνομα ενός ιστότοπου όπως το Gmail ή το iCloud, το οποίο στη συνέχεια ακολουθείται από ένα ".com", ".org" ή κάποιο άλλο είδος τριών χαρακτήρων ανώτατου επιπέδου τομέα.
Για να το γράψετε στο regex, πρέπει να καθορίσετε ότι θέλετε μια συμβολοσειρά τουλάχιστον ενός χαρακτήρα που να ακολουθείται αμέσως με το σύμβολο «@», μετά μια άλλη συμβολοσειρά τουλάχιστον ενός χαρακτήρα, ακολουθούμενη από ένα «.», στη συνέχεια ακολουθούμενη από μια συμβολοσειρά τριών χαρακτήρες. Αυτό θα μοιάζει με αυτό:
[email προστατευμένο]+\..{3}
Αν το επικολλήσετε στο Κείμενο αντιστοίχισης ή Αντικατάσταση κειμένου ενεργειών στις Συντομεύσεις, θα έχετε έναν αυτοματισμό που μπορεί να βρει, να αποθηκεύσει και να χειριστεί μια διεύθυνση email.
Μπορείτε να χρησιμοποιήσετε αυτό το είδος επίλυσης προβλημάτων για να βρείτε τις δικές σας λύσεις regex ή για να βρείτε κάποιες που άλλοι έχουν φτιάξει στο Διαδίκτυο!
Ξεκινήστε να χρησιμοποιείτε το regex με τις Συντομεύσεις για να μεταφέρετε την αυτοματοποίησή σας στο επόμενο επίπεδο
Και αυτό, φίλοι, είναι πραγματικά. Ελπίζω να σας άρεσε να παρακολουθείτε αυτό το άρθρο! Αυτό είναι ένα από τα πιο φιλόδοξα κομμάτια που έχω γράψει ποτέ για το AppleToolBox. Έπρεπε να διδάξω τον εαυτό μου regex για να το γράψω, και ελπίζω ότι με αυτόν τον τρόπο, κατάφερα να σας βοηθήσω να το μάθετε.
Η χρήση του regex με τις Συντομεύσεις δεν διαφέρει από το να μάθετε πώς να κάνετε οτιδήποτε άλλο στο smartphone ή τον υπολογιστή σας. Απλώς αφιερώστε λίγο χρόνο και υπομονή, και τελικά, θα φτάσετε εκεί.
Για περισσότερους οδηγούς, σεμινάρια και νέα σχετικά με όλα τα πράγματα της Apple, ρίξτε μια ματιά στα υπόλοιπα το ιστολόγιο AppleToolBox.
Καλώς [A-Z][a-z]+
, θα σε δω την επόμενη φορά!