Κανονική έκφραση: Τι σημαίνει

click fraud protection

Τι είναι μια κανονική έκφραση;

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

Οι τακτικές εκφράσεις τείνουν να φαίνονται τρομακτικές, ειδικά για τους μη προγραμματιστές. Απλά κοιτάξτε αυτό:

[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +

Ρεαλιστικά, στην πραγματικότητα δεν είναι τόσο κακό. ότι ταιριάζει με διευθύνσεις email. Όπως θα δείτε, οι εκφράσεις μπορούν να χωριστούν σε μεμονωμένους χαρακτήρες, που όλοι λένε στο πρόγραμμα τι να ψάξει.

Οι τυπικές εκφράσεις είναι σχεδόν καθολικές. Ο ίδιος στρατηγός σύνταξη εφαρμόζεται σε όλες τις γλώσσες με μικρές παραλλαγές εδώ και εκεί. Αυτός ο οδηγός περιέχει παραδείγματα τόσο από την Python όσο και από το JavaScript, καθώς και από απλό παλιό regex. Εάν εργάζεστε με διαφορετική γλώσσα, μην ανησυχείτε. Σχεδόν όλα θα ισχύουν και για τη γλώσσα επιλογής σας.

instagram viewer

Βασικά στοιχεία του Regex

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

Ο πρώτος πιο δυναμικός χαρακτήρας που ταιριάζει είναι το "." χαρακτήρας. Σε αυτό το πλαίσιο, ο χαρακτήρας κουκκίδας είναι μπαλαντέρ. Εάν το αναζητάτε, το πρόγραμμά σας θα επιστρέψει οποιονδήποτε χαρακτήρα εντοπίζει ως αντιστοιχία.

Λοιπόν, τι γίνεται αν θέλετε να αναζητήσετε μια κυριολεκτική κουκκίδα; Αυτό δεν είναι δύσκολο. Όταν θέλετε να χρησιμοποιήσετε μια κυριολεκτική περίοδο, προσθέστε μια ανάστροφη κάθετο πριν, όπως αυτή: '\.'

Χαρακτήρες ανάστροφης κάθετης

Ωστόσο, η ανάστροφη κάθετο παίζει πολύ περισσότερους ρόλους. Οι περισσότεροι από τους κύριους χαρακτήρες regex περιλαμβάνουν ανάστροφη κάθετο.

Ψηφία κανονικής έκφρασης
Εύρεση ψηφίων με Regex στο Python.

Ρίξτε μια ματιά σε μερικά παραδείγματα:

  • \ d: Ψηφία από 0 έως 9
  • \ w: Γράμματα, ψηφία και υπογράμμιση "Χαρακτήρες λέξεων"
  • \ s: Χαρακτήρες κενού διαστήματος, συμπεριλαμβανομένων καρτελών, νέων γραμμών και κανονικών κενών

Αν χρησιμοποιείτε το κεφαλαίο γράμμα αντί για οποιοδήποτε από αυτά, θα έχετε το αντίθετο. Για παράδειγμα, το "\ D" σας δίνει όλα εκτός από ψηφία.

Μαθήματα

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

Τάξεις κανονικής έκφρασης
Χρησιμοποιώντας τάξεις Regex για να βρείτε γράμματα στο Python.

Τοποθετήστε τους χαρακτήρες που θέλετε να ταιριάξετε σε ένα ζευγάρι αγκύλες '[]' και το πρόγραμμά σας θα ταιριάζει με οποιονδήποτε από αυτούς. Αυτό ονομάζεται τάξη regex.

[abcd1234]

Το παραπάνω παράδειγμα παραμένει αναποτελεσματικό. Αντ 'αυτού, μπορείτε να χρησιμοποιήσετε μια παύλα για να καθορίσετε ένα εύρος. για παράδειγμα, όλα τα πεζά γράμματα:

[α-ζ]

Μπορείτε επίσης να παραθέσετε εύρη. Η παρακάτω έκφραση ταιριάζει με όλα τα γράμματα και ψηφία:

[a-zA-Z0-9]

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

[a-zA-Z0-9 _. + -]

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

[^0-9_+.-]

Ομάδες

Οι ομάδες χρησιμοποιούν ένα σύνολο παρενθέσεων για να χωρίσουν την έκφρασή σας. Ομαδοποιούν δεδομένα, επιτρέποντας στο πρόγραμμά σας να στοχεύει και να τα χρησιμοποιεί. Όταν ένα πρόγραμμα αφαιρεί το « http://' από μια διεύθυνση ιστού, χρησιμοποιεί ομάδες regex για να το επιτύχει. Το regex το επιτρέπει να στοχεύει συγκεκριμένα κριτήρια και οι ομάδες το αφήνουν να διαχωρίζουν ενότητες.

Ομάδες κανονικής έκφρασης
Regex Groups Βοήθεια Εύρεση διευθύνσεων URL σε JavaScript.

Οι ομάδες σας επιτρέπουν επίσης να επιλέξετε μεταξύ ενός μοτίβου ή ενός άλλου μοτίβου. Απασχολούν ένα ενιαίο "|" να ενεργεί ως "ή" στην έκφραση. Η παρακάτω έκφραση θα ταιριάζει με οποιοδήποτε από αυτά: .com, .org, .net, .edu ή .gov.

\. (com | org | net | edu | gov)

Ποσοτικά

Τα ποσοτικά είναι ακριβώς όπως ακούγονται. Λένε στην έκφραση την ποσότητα ενός χαρακτήρα που ψάχνετε. Αυτοί είναι οι διαθέσιμοι ποσοτικοί προσδιοριστές:

  • *: Μηδέν ή περισσότερα
  • +: Ένα ή περισσότερα
  • ;: Μηδέν ή ένα
  • {3}: Το ποσό των παρενθέσεων

Τοποθετήστε οποιοδήποτε από αυτά τα ποσοτικά στο τέλος του χαρακτήρα ή της τάξης που θέλετε να καθορίσετε το ποσό. Αυτό το παράδειγμα αναζητά τυπικούς επταψήφιοι αριθμούς τηλεφώνου:

\ d {3} [. * -] \ d {3} [. * -] \ d {4}

Άγκυρες και όρια

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

Άγκυρες κανονικής έκφρασης
Regex Anchors Χρησιμοποιήστε την τοποθέτηση για να βρείτε έναν αγώνα σε JavaScript.

Αυτές είναι οι κύριες επιλογές σας:

  • ^: Η αρχή μιας συμβολοσειράς
  • $: Το τέλος μιας συμβολοσειράς
  • \ b: Όριο λέξεων (αρχή ή τέλος μιας λέξης)

Εάν θέλετε να βρείτε μόνο συμβολοσειρές που ξεκινούν με ένα γράμμα, μπορείτε να δοκιμάσετε:

^ [α-ζΑ-Ζ]

Ας πούμε ότι θέλετε να βρείτε μόνο τη λέξη "it", όχι λέξεις που περιέχουν τα γράμματα I και T. εκεί θα χρησιμοποιούσατε όρια λέξεων.

\ b (i | I) t \ b

Τελικές σκέψεις

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

instagram story viewer