Regex, ελληνιστί “κανονικές εκφράσεις”

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

Για να καταλάβουμε σε ένα πολύ απλό παράδειγμα, ας θεωρήσουμε ότι έχουμε το string 123456789ABCDEF και μέσα απο αυτό, θέλουμε να πάρουμε μονο το κομμάτι 9ΑΒ.  Δηλαδή το regex 9AB, θα βρεί το συγκεκριμένο pattern στον 9ο, 10ο και 11ο χαρακτήρα του string και θα μας τους επιστρέψει.

Ομοίως, εάν έχουμε ένα regex = 123, τότε θά πάρουμε τους 3 πρώτους χαρακτήρες του string.

Εάν όμως έχουμε ένα regex = 1Α2Β3, τότε δεν θα μας επιστρέψει απολύτως τίποτα, διότι δεν υπάρχει η συγκεκριμένη ακολουθία μέσα στο string.

Οι βασικοί ορισμοί της γλώσσας είναι οι εξής:

\w -> 1 αλφαβητικός χαρακτήρας

\d -> 1 αριθμητικός χαρακτήρας

\s -> 1 “κενός” χαρακτήρας (whitespace, νεα γραμμή)

-> Οποιοσδήποτε χαρακτήρας, εκτός της νέας γραμμής (enter ή \n)

\n -> 1 νέα γραμμή

? -> 0 ή 1 χαρακτήρες

* -> 0 ή περισσότεροι χαρακτήρες

+ -> 1 ή περισσότεροι χαρακτήρες

[0-9] ή [A-Z] ή [a-z] -> Οποιοσδήποτε χαρακτήρας στο διάστημα απο 0 εώς 9 ή στο διαστημα απο A εώς Ζ λατινικό (έχει σχέση εάν είναι κεφαλαίο ή πεζό). Τα διαστήματα μπορεί να ειναι οποιαδήποτε πχ [2-8] για τα νούμερα απο 2 εώς 8 ή [B-G] για τους χαρακτήρες απο το B εώς το G. Επίσης μπορεί να είναι και μεμονωμένοι πχ [a,b,c,D,E,F]

{,3} ή {3,} -> Επαναλήψεις του χαρακτήρα εώς και 3 φορές ή απο 3 φορές και πάνω. Επίσης μπορεί να χρησιμοποιηθεί και ώς {3} που σημαίνει ακριβώς 3 φορές ή και ώς {3,5} που σημαίνει απο 3 εως 5 φορές.

\ και οποιοσδήποτε χαρακτήρας μή αλφαριθμητικός -> πχ το\. μας γυρνάει το . ή το \[ μας γυρναει το [ ή το \\ μας γυρναει το \ κοκ..

Οπότε για το string = [13255badSIN] το regex που μπορεί να μας το επιστρέψει, είναι το:

\[\d[1-5]{5}\w[a-d]{3}\w[I-S]{3}\]

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: