Κατηγορίες
tech

Regex ή κανονικές εκφράσεις

Οι περισσότεροι χρήστες είναι συνήθως ικανοποιημένοι με τις δυνατότητες εύρεσης αντικατάστασης που μπορεί να έχει κάποια εφαρμογή στον υπολογιστή τους. Τι κάνουν όμως οι χρήστες που θέλουν να υλοποιήσουν πιο σύνθετα πράγματα, όπως για παράδειγμα να σβήσουν σε κάθε σειρά, όλους τους χαρακτήρες πριν από κάποιο συγκεκριμένο χαρακτήρα π.χ. τον χαρακτήρα underscore ( _ );

Μια πολύ συνηθισμένη λύση είναι η χρήση των κανονικών εκφράσεων, regular expressions στα αγγλικά, ή για συντομία regex.

Οπότε η λύση στο προηγούμενο πρόβλημα είναι να γράψουν: ^[^_]*_ το οποίο σημαίνει ότι πρώτα ταιριάζει όλο το κείμενο από την αρχή μέχρι το πρώτο underscore ( _ ), και στη συνέχεια αντικαθιστά το επιλεγμένο κείμενο με την κενή συμβολοσειρά. Δηλαδή με λίγα λόγια διαγράφει από την αρχή της σειράς μέχρι το πρώτο underscore.

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

Οι κανονικές εκφράσεις εμφανίστηκαν στην γλώσσα προγραμματισμού Perl και μετά από την επιτυχημένη υιοθέτηση τους από άλλες γλώσσες, δημιουργήθηκε η βιβλιοθήκη PCRE (Perl Compatible Regular Expressions), η οποία είναι γραμμένη στην γλώσσα προγραμματισμού C.

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

Μπορείτε να δείτε μια σύγκριση διαφορετικών υλοποιήσεων κανονικών εκφράσεων στην Βικιπαίδεια, ή ακόμη να χρησιμοποιήσετε κάποιο regex cheatsheet.

Έχετε κάτι να σχολιάσετε;