Εισαγωγή στα Λειτουργικά Συστήματα

Σχετικά έγγραφα
Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

Προγραμματισμός Διαδικτύου

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

Ενότητα 3 1 Compiler Lecture Notes 1.0 documentation

Regular Expressions ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Γλωσσική Τεχνολογία. String Handling Regular Expressions

Διάλεξη 6 Εργαλεία Ωφελιμότητας Unix: Sed

Fixed Character strings

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Τι είναι το Flex. Περιγραφή ενός λεξικογραφικού αναλυτή στη γλώσσα του lex/flex. Γενικά Χαρακτηριστικά του Flex

Λειτουργικά Συστήματα 5η εργαστηριακή άσκηση

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Διάλεξη 6 Εργαλεία Ωφελιμότητας Unix: Sed

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές

Δομημένος Προγραμματισμός

Βασικές Αρχές Προγραμματισμού

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

// MATHIMA 2, // s.boot; s.makewindow.boot; // boot server!

Πρόβλημα 29 / σελίδα 28

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Εκχώρηση Τιμών

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Μεθόδων Επίλυσης Προβλημάτων

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 8: Υπολογισιμότητα & Γλώσσες

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Εισαγωγή στα Λειτουργικά Συστήματα

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Γλώσσα Προγραμματισμού C

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Μεταγλωττιστές. Ενότητα 3: Τυπικές γλώσσες (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Γ τάξη Τεχνολογικής Κατεύθυνσης Ενιαίου Λυκείου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. ΔΟΜΗ ΕΠΙΛΟΓΗΣ Διδάσκων: ΔΟΥΡΒΑΣ ΙΩΑΝΝΗΣ

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Μεταβλητές τύπου χαρακτήρα

Θέματα Προγραμματισμού Η/Υ

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Δεδομένα, τελεστές, είσοδος/έξοδος

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Πληροφορική 2. Αλγόριθμοι

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Προγραμματισμός Η/Υ (ΤΛ2007 )

Μερικές άλλες χρήσιμες εντολές

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Εντολές ελέγχου ροής if, for, while, do-while

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Περιεχόμενα. Πρόλογος...11

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Transcript:

Εισαγωγή στα Λειτουργικά Συστήματα S E T Δ Ι Α Φ Α Ν Ε Ι Ω Ν 6 Κ Α Ν Ο Ν Ι Κ Έ ς Ε Κ Φ Ρ Ά Σ Ε Ι ς Α Ν Τ Ω Ν Η ς Σ Ι Δ Η Ρ Ο Π Ο Υ Λ Ο ς

Κανονικές Εκφράσεις (Regular Expressions) Μια κανονική έκφραση είναι ένας σύντομος και σαφής τρόπος έκφρασης οποιουδήποτε συνδυασμού χαρακτήρων. 2 Οι κανονικές εκφράσεις (RE) αποτελούνται από συνδυασμό κανονικών χαρακτήρων με έναν ή περισσότερους μεταχαρακτήρες. Οι μεταχαρακτήρες είναι χαρακτήρες με ειδική σημασία. Οι κανονικές εκφράσεις χρησιμοποιούνται κυρίως για ΕΛΕΓΧΟ strings.

Κανονικές Εκφράσεις (Regular Expressions) Οι Κανονικές εκφράσεις δεν είναι μόνο δυνατότητα του Unix. Στο Unix χρησιμοποιούνται ιδιαίτερα, αλλά είναι θέμα να τις υποστηρίζουν οι εφαρμογές που χρησιμοποιούμε. ΟΛΕΣ οι γλώσσες προγραμματισμού έχουν υποστήριξη για κανονικές εκφράσεις. Είτε μέσω βιβλιοθηκών, πχ: C, C++ Είτε είναι ενσωματωμένες στην γλώσσα, πχ: perl, php, Javascript 3

Κανονικές Εκφράσεις (Regular Expressions) Προτάθηκαν για πρώτη φορά το 1956 (S. Kleene) Ο Ken Thomson (1968) τις χρησιμοποίησε στην εντολή grep (global regular expression print) 4 H εντολή grep αναζητά μια δεδομένη κανονική έκφραση μέσα σε ένα αρχείο. Διαβάζει το αρχείο γραμμή-γραμμή και ελέγχει αν στην τρέχουσα γραμμή ταιριάζει η κανονική έκφραση. Αν ναι, τότε τυπώνει την γραμμή, αν όχι τότε προχωρά στην επόμενη Μερικές από τις πλέον ισχυρές εντολές (λειτουργίες) του UNIX, όπως grep και sed, χρησιμοποιούν κανονικές εκφράσεις.

Κανονικές Εκφράσεις Μια κανονική έκφραση είναι παρόμοια με μια μαθηματική έκφραση. Μια μαθηματική έκφραση αποτελείται από τελεστέους (operands) και τελεστές (operators). Μια κανονική έκφραση αποτελείται από atoms και operators. Το atom προσδιορίζει αυτό που αναζητούμε και το σημείο του κειμένου όπου υπάρχει αντιστοιχία. Ένας operator συνδυάζει atoms σε σύνθετες εκφράσεις. 5

Atoms 6 Atoms Απλός χαρακτήρας. κλάση χαρακτήρων anchor (άγκυρα) Back Reference

Operators 7 Operators Sequence (Ακολουθία) Alternation (OR) Repetition (Επανάληψη) Group (ομαδοποίηση) Save (αποθήκευση) κανένα σύμβολο {m,n}, *, +,? ( ) ( )

Παράδειγμα απλής RE H απλούστερη μορφή RE είναι ένας απλός χαρακτήρας: 8

Παράδειγμα απλής RE μια ακολουθία απλών χαρακτήρων: 9 HELLO ELL No match HELLO String HELLO ELL match ELL RegExp Εφόσον δεν υπάρχει κάποιο σύμβολο πράξης, εννοείται η πράξη της ακολουθίας: αναζητούμε τον χαρακτήρα E, ο οποίος ακολουθείται από τον χαρακτήρα L, ο οποίος ακολουθείται από τον χαρακτήρα L

Παράδειγμα RE H τελεία (.) σημαίνει ένας οποιοσδήποτε χαρακτήρας: 10 O. HELLO O. x

Κλάση χαρακτήρων Μια class atom ορίζει ένα σύνολο ASCII χαρακτήρων, καθένας από τους οποίους μπορεί να αντιστοιχεί με οποιουσδήποτε χαρακτήρες του κειμένου. Το σύνολο χαρακτήρων που χρησιμοποιείται στη διαδικασία αντιστοίχισης (matching process) περικλείεται σε αγκύλες. πχ: [abcrt] Μια περιοχή (range) χαρακτήρων κειμένου ορίζεται με μια παύλα (-) π.χ. [a-d], [a-dx-z] Το ^ είναι ένας χαρακτήρας εξαίρεσης π.χ. οποιοσδήποτε χαρακτήρας εκτός από τους abc [^abc]. π.χ. οποιοσδήποτε χαρακτήρας εκτός από αριθμό [^0-9]. 11

Κλάση χαρακτήρων Υπάρχουν και pre-defined σύνολα χαρακτήρων: [:alnum:] 0-9a-zA-Z, [:alpha:] a-za-z 12 eg: [[:alnum:],+] [0-9a-zA-Z,+] [:cntrl:], [:print:] Κοντρόλ χαρακτήρας (<31 στον πίνακα ASCII), εκτυπώσιμος χαρακτήρας (visible and spaces). [:digit:], [:xdigit:] 0-9, 0-9A-F [:graph:] εκτυπώσιμος χαρακτήρας εκτός spaces/tabs. [:lower:], [:upper:], πεζός, κεφαλαίος [:punct:], [:space:] στίξη (\]\[!"#$%&'()*+,./:;<=>?@\^_`{ }~-)

άγκυρες Anchors : είναι atoms που χρησιμοποιούνται για να αντιστοιχήσουν το πρότυπο σε ένα συγκεκριμένο τμήμα Τα Anchors δεν αντιστοιχούνται σε χαρακτήρες αλλά καθορίζουν ένα σημείο. 13 Beginning of string End of string Beginning of word End of word

άγκυρες Anchors : είναι atoms που χρησιμοποιούνται για να αντιστοιχήσουν το πρότυπο σε ένα συγκεκριμένο τμήμα Τα Anchors δεν αντιστοιχούνται σε χαρακτήρες αλλά καθορίζουν ένα σημείο. One line Of Text String 14 ^O RegExp One line of Text ^O match One line of Text ^T no match One line of Text ^T no match

άγκυρες 15 title Of text String t$ RegExp title Of text t$ title Of text t$ no match no match title Of text t$ no match title Of text t$ match

Τελεστής Ακολουθίας Ο τελεστής ακολουθίας (sequence operator) δεν εκφράζεται με σύμβολο. Αυτό σημαίνει ότι αν μια σειρά από atoms φαίνονται σε μια κανονική έκφραση, υποδηλώνεται η παρουσία ενός αόρατου sequence operator ανάμεσά τους. 16

Τελεστής Ακολουθίας 17

Τελεστής OR Ο τελεστής εναλλαγής (alternation operator) χρησιμοποιείται για να ορίσει μια ή περισσότερες εναλλακτικές περιπτώσεις 18

Τελεστής επανάληψης (Repetition Operator) Ο τελεστής επανάληψης (repetition operator) καθορίζει για το atom που υπάρχει ακριβώς πριν από την επανάληψη πόσες φορές πρέπει να επαναληφθεί. σύμβ. {n} {n,m} {n,} εξήγηση 19 Το προηγούμενο atom ακριβώς n φορές Το προηγούμενο atom από n έως m φορές Το προηγούμενο atom n ή περισσότερες φορές * ή {0,} Το προηγούμενο atom 0 ή περισσότερες φορές + ή {1,} Το προηγούμενο atom 1 ή περισσότερες φορές? ή {0,1} Το προηγούμενο atom 0 ή 1 φορές

Τελεστής επανάληψης - Παραδείγματα σύμβ. Α{3} Β{2,4} ΑΒ{1,3} A{1,3}B εξήγηση ΑΑΑ 20 ΒΒ ή ΒΒΒ ή ΒΒΒΒ BB BBB BBBB ΑΒ ή ΑΒΒ ή ΑΒΒΒ AB, AAB,AAAB A{1,3}B{1,3} AB,ABB,ABBB, AAB,AABB,AABBB, AAAB,AAABB,AAABBB ΑΒ{4,}C ΑΒ*C [zxc]{2} A.{1,3} Α[^Α]{1,3}Α ABBBBC ή ΑΒΒΒΒΒC ή ΑΒΒΒBΒΒC ή κτλ. AC, ABC, ABBC, ABBBC, κτλ. [zxc][zxc] (Τα 2 atoms μπορούν να ταιριάξουν σε διαφορετικούς χαρακτήρες, πχ: zc ) szxcstyf, zz,zx,zc,xz,xx,xc,cz,cx,cc A. ή A.. ή A... AZ, AC, A#, ACC, AXC, ACVB Α[^Α]Α Α[^Α][^Α]Α Α[^Α][^Α][^Α]Α θα ταιριάξουν τα ΑΒΑ, ΑΒΗΑ, ΑΟΙPΑ, AABA, ABCBCABA, A A αλλά όχι τα ΑRTYUA, AA, AAA,

Τελεστής επανάληψης - Παραδείγματα 21 σύμβ. εξήγηση A*B Α+Β ΒΑ?Β Β.?Β Β.*Β ^B.*B ^B.*B$ Β.+Β B ή ΑΒ ή ΑΑΒ ή ΑΑΑΒ ή κτλ., XCXCB, ΑΒ ή ΑΑΒ ή ΑΑΑΒ ή κτλ., XCXCB ΒΒ ή ΒΑΒ, BAAB, BAABAB, BXB, BXBB ΒΒ ή Β.Β πχ: ΒΑΒ, ΒΔΒ, ΒΟΒ, Β)Β, Β Β, XXB-B ΒΒ ή Β.Β ή Β..Β ή Β Β ή Β.Β ή κτλ. BADSADB, BHGDBBBSG, FSDGBBTF ^BB ^B.B ^B..B κτλ. BADSADB, BHGDBBBSG, FSDGBBTF ^BB$ ^B.B$ ^B..B$ κτλ. BADSADB, BHGDBBBSG, FSDGBBTF Β.Β ή Β..Β ή Β Β ή Β.Β ή κτλ. [0-9]+[,]?[0-9]* ένα ή περισσότερα νούμερα, μετά το «,» ή όχι και μετά 0 ή περισσότερα νούμερα

Τελεστής επανάληψης - Παραδείγματα 22

Τελεστής ομαδοποίησης (Group Operator) 23 Ο group operator είναι ένα ζεύγος παρενθέσεων που ανοίγουν και κλείνουν. Όταν μια ομάδα χαρακτήρων περικλείεται σε παρενθέσεις ο επόμενος τελεστής εφαρμόζεται σε όλη την ομάδα. σύμβ. εξήγηση (ΑΒ){2} Α(ΑΒ){1,3}ΧΥ ΑΒΑΒ ΑΑΒΧΥ, ΑΑΒΑΒΧΥ, ΑΑΒΑΒΑΒΧΥ Α((ΧΖ){2}Ρ{3}){3} Α(ΧΖΧΖΡΡΡ){3} ΑΧΖΧΖΡΡΡΧΖΧΖΡΡΡΧΖΧΖΡΡΡ

Τελεστής αποθήκευσης (Save) & Back Reference 24 Με την ομαδοποίηση δίνεται συγχρόνως και «εντολή αποθήκευσης σε buffer» του string που ταίριαξε στο τμήμα της RE που είναι στις παρενθέσεις Υπάρχουν 9 buffers που μπορούν να χρησιμοποιηθούν για αποθήκευση. Οι buffers συμβολίζονται με \1, \2, \3,, \9 σύμβ. εξήγηση (.)\1 θα ταιριάξει στα ΑΑ,ΒΒ,ΓΓ,,00,11,22 οποιουσδήποτε 2 χαρακτήρες που επαναλαμβάνονται. ([0-9])[0-9]*\1 θα ταιριάξει στα 55, 58765, 1675566551, 435231, 4543, 122334, 34567, asdd22tf, sdf45drr5, a5as5235.. ([0-9]{3})\1 θα ταιριάξει στα 346346, 987987, 123123,51231237 ([0-9]{3})\1[Α-Ζ]*\1 θα ταιριάξει στα 346346346, 987987ΑΔΣ987, 123123ΤΡΕΕ123, ([0-9])\1{3} ([0-9])\1\1\1. θα ταιριάξει στα 5555,9999, 2222, 233222243, 342222222456, ([0-9]{2})\1{2} θα ταιριάξει στα 555555, 828282, 161616, (.)(.).{2}\2\1 θα ταιριάξει στα ΑΒΧΥΒΑ, ΕΡ98ΡΕ (.).{3}\1 AXCDA, XCXADSX

25 ([0-9])[0-9]{8}\1 ^([0-9])[0-9]{8}\1$ \<([0-9])[0-9]{8}\1\>

Backslash 26 O χαρακτήρας \ (backslash) χρησιμοποιείται είτε για να αποδώσει ειδική σημασία στον χαρακτήρα που ακολουθεί, είτε για να αναιρέσει την ειδική σημασία του (αν είναι ειδικός χαρακτήρας). σύμβ. εξήγηση * Τελεστής επανάληψης \* Ο χαρακτήρας «*» \[ Ο χαρακτήρας «[»

Ειδικοί χαρακτήρες 27 O χαρακτήρας \ (backslash) χρησιμοποιείται είτε για να αποδώσει ειδική σημασία στον χαρακτήρα που ακολουθεί, είτε για να αναιρέσει την ειδική σημασία του (αν είναι ειδικός χαρακτήρας). σύμβ. εξήγηση * τελεστής + τελεστής? τελεστής [ κλάση { τελεστής (,) ομαδοποίηση or σύμβ. εξήγηση ] μόνο μετά από [ } μόνο μετά από { ^ στην αρχή της RE (αρχή string), όταν είναι πρώτος χαρακτήρας μέσα σε κλάση (άρνηση), σε άλλα σημεία δεν έχει ειδική σημασία. - μέσα σε κλάση (εύρος). Αλλιώς ο χαρ. «-». $ στο τέλος της RE (τέλος string). Αλλιώς ο χαρ. «$».. οποιοσδήποτε χαρακτήρας. Μέσα σε [] ο χαρακτήρας «.». μέσα σε μια κλάση χαρακτήρων, (σχεδόν) όλοι οι ειδικοί χαρακτήρες χάνουν την ειδική σημασία τους. πχ: [{}*()/+*?.] σημαίνει ένας χαρακτήρας από τους {}*()/+*?.

Ειδικοί χαρακτήρες 28 O χαρακτήρας \ (backslash) χρησιμοποιείται είτε για να αποδώσει ειδική σημασία στον χαρακτήρα που ακολουθεί, είτε για να αναιρέσει την ειδική σημασία του (αν είναι ειδικός χαρακτήρας). σύμβ. εξήγηση \1..\9 back reference \<, \> anchors \w word character [a-za-z0-9_] \d digit [0-9] \s spaces spaces ad tabs and lines breaks \W, \D, \S άρνηση των παραπάνω μέσα σε μια κλάση χαρακτήρων, (σχεδόν) όλοι οι ειδικοί χαρακτήρες χάνουν την ειδική σημασία τους. πχ: [{}*()/+*?.] σημαίνει ένας χαρακτήρας από τους {}*()/+*?.

τύποι κανονικών εκφράσεων Υπάρχουν διάφοροι τύποι κανονικών εκφράσεων (όχι σε όλα συμβατοί μεταξύ τους) IEEE POSIX 29 Basic Regular Expressions (BRE) Extended Regular Expressions (ERE) Perl και άλλοι νεώτεροι (ανάλογα με την γλώσσα προγραμματισμού) πχ: η php είχε αναπτύξει δικό της μηχανισμό κανονικών εκφράσεων, αλλά πλέον καταργήθηκε και χρησιμοποιείται της perl (preg)

BRE vs. ERE 30 In basic regular expressions the meta-characters?, +, {,, (, and ) lose their special meaning; instead use the back slashed versions \?,\+, \{, \, \(, and \). ERE BRE? \? + \+ { } \{ \} ( ) \( \) \

Χρήσεις των Κανονικών Εκφράσεων 31 Οι κανονικές εκφράσεις δεν είναι δυνατότητα του UNIX, αλλά μπορούν να χρησιμοποιηθούν μέσα από οποιαδήποτε γλώσσα προγραμματισμού (perl, php, javascript, java, VB, C++, C#, C, python, SQL,..) Χρήσεις: Αναζήτηση προτύπων και εξόρυξη πληροφορίας από αρχεία ή ροές δεδομένων. (grep, vi, ) Αντικατάσταση προτύπων σε αρχεία ή ροές δεδομένων. (sed, vi, ) Έλεγχος μορφής (σύνταξης) ενός string.

Χρήσεις των Κανονικών Εκφράσεων (2) Παράδειγμα: 32 Σε μια φόρμα (ή σε οποιοδήποτε πρόγραμμα) ζητούμε από τον χρήστη να εισάγει αριθμό τηλεφώνου. Δεν θέλουμε όμως να πληκτρολογήσει spaces, παύλες, τελείες ή άλλους χαρακτήρες εκτός από αριθμούς. Επίσης, το μήκος τηλεφώνου πρέπει να είναι 10. Για να γίνει αυτός ο έλεγχος μέσα από μια γλώσσα προγραμματισμού χωρίς την χρήση κανονικών εκφράσεων απαιτείται να γράψουμε πάνω από 10 γραμμές κώδικα. Με χρήση κανονικών εκφράσεων αρκεί να ελέγξουμε ότι το string που έδωσε ο χρήστης ταιριάζει στην κανονική έκφραση: ^[0-9]{10}$

Χρήσεις των Κανονικών Εκφράσεων (3) Php: 33 if(preg_match('/^[0-9]{10}$/', $input_string)) { } Perl: If( /^[0-9]{10}$/ =~ $input_string) { } Javascript: var myreg = /^[0-9]{10}$/ ; if (myreg.exec(input_string)) { } Java: String input_string; if(input_string.match("^[0-9]{10}$")) { } C#: If (Regex.Match(input_string, @"^[0-9]{10}$").Success) { }

Χρήσεις των Κανονικών Εκφράσεων (4) Σε περίπτωση που θέλουμε να δεχόμαστε και την διεθνή μορφή τηλεφώνου, πχ: +302310999888, θα πρέπει απλά να επεκτείνουμε την κανονική έκφραση: (^[0-9]{10}$ ^\+[0-9]{11,13}$) 34