diff --git a/README-cn.md b/README-cn.md
index f0e3fa6..add4168 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -12,6 +12,7 @@
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
+* [Greek](README-gr.md)
## 什么是正则表达式?
diff --git a/README-es.md b/README-es.md
index 6fc16ba..b7c78e0 100644
--- a/README-es.md
+++ b/README-es.md
@@ -12,6 +12,7 @@
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
+* [Greek](README-gr.md)
## What is Regular Expression?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/README-fr.md b/README-fr.md
index ea53f4e..6e7c65d 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -12,6 +12,7 @@
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
+* [Greek](README-gr.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/README-gr.md b/README-gr.md
new file mode 100644
index 0000000..8fb7da2
--- /dev/null
+++ b/README-gr.md
@@ -0,0 +1,552 @@
+
+
+
+
+
+
+"the" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/dmRygT/1) + +Η κανονική έκφραση `123` "ταιριάζει" με το string `123`. Η έκφραση αυτή +αναζητείται μέσα σ'ένα string εισόδου αντιστοιχίζοντας κάθε χαρακτήρα της με κάθε +χαρακτήρα του string. Οι κανονικές εκφράσεις συνήθως λαμβάνουν υπόψη το αν τα γράμματα είναι +κεφαλαία ή πεζά και άρα η έκφραση `The` δεν θα ταίριαζε με το string `the`. + +
+"The" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/1paXsy/1) + +## 2. Μεταχαρακτήρες + +Οι μεταχαρακτήρες είναι τα δομικά στοιχεία των κανονικών εκφράσεων. Δεν αντιπροσωπεύουν +τον εαυτό τους αλλά ερμηνεύονται με ειδικό τρόπο. Μερικοί από αυτούς, έχουν +ειδικό νόημα και γι'αυτό γράφονται μέσα σε αγκύλες. Οι μεταχαρακτήρες είναι οι παρακάτω: + +|Μεταχαρακτήρας|Περιγραφή| +|:----:|----| +|.|Η τελεία είναι ισοδύναμη με οποιονδήποτε μεμονωμένο χαρακτήρα εκτός από αυτόν για αλλαγή γραμμής.| +|[ ]|Κλάση χαρακτήρων. Είναι ισοδύναμη με οποιονδήποτε χαρακτήρα βρίσκεται μέσα σε αγκύλες.| +|[^ ]|Κλάση χαρακτήρων εξαίρεσης. Είναι ισοδύναμη με οποιονδήποτε χαρακτήρα δεν βρίσκεται μέσα σε αγκύλες| +|*|Ταιριάζει με 0 ή παραπάνω επαναλήψεις του προηγούμενου συμβόλου.| +|+|Ταιριάζει με 1 ή παραπάνω επαναλήψεις του προηγούμενου συμβόλου.| +|?|Κάνει το προηγούμενο σύμβολο προαιρετικό.| +|{n,m}|Αγκύλες. Ταιριάζει με τουλάχιστον "n" αλλά όχι με παραπάνω από "m" επαναλήψεις του προηγούμενου συμβόλου.| +|(xyz)|Ομάδα χαρακτήρων. Είναι ισοδύναμη με τους χαρακτήρες xyz ακριβώς με την σειρά στην οποία βρίσκονται.| +|||Εναλλαγή. Ταιριάζει είτε με τους χαρακτήρες που βρίσκονται πριν είτε μετά το σύμβολο.| +|\|Παραλείπει το ειδικό νόημα του χαρακτήρα. Αυτό μας επιτρέπει να ταιριάξουμε χαρακτήρες +ειδικής χρήσης
[ ] ( ) { } . * + ? ^ $ \ |
|
+|^|Αναζητά το μοτίβο που ακολουθεί στην αρχή μιας εισόδου.|
+|$|Αναζητά το μοτίβο που ακολουθεί στο τέλος μιας εισόδου.|
+
+## 2.1 Τελεία
+
+Η τελεία `.` είναι το πιο απλό παράδειγμα μεταχαρακτήρα. Είναι ισοδύναμη με οποιονδήποτε
+μεμονωμένο χαρακτήρα με εξαίρεση τον χαρακτήρα για επιστροφή στην αρχή της γραμμής
+και αυτόν για νέα σειρά. Για παράδειγμα, η κανονική έκφραση `.ar` αναπαριστά: οποιονδήποτε
+χαρακτήρα που ακολουθείται από το γράμμα `a`, που με την σειρά του ακολουθείται από το γράμμα `r`.
+
++".ar" => The car parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/xc9GkU/1) + +## 2.2 Σύνολα Χαρακτήρων + +Τα σύνολα χαρακτήρων καλούνται αλλιώς και κλάσεις χαρακτήρων. Τα σύνολα αυτά γράφονται μέσα +σε αγκύλες. Για τον ορισμό της εμβέλειας ενός τέτοιου συνόλου χρησιμοποιείται μια παύλα +για να διαχωρίζει την αρχή από το τέλος. Η σειρά των χαρακτήρων, που βρίσκονται μέσα στην +εμβέλεια του συνόλου που ορίζεται από τις αγκύλες, δεν έχει σημασία. Για παράδειγμα, +η κανονική έκφραση `[Tt]he` αναπαριστά: ένα κεφαλαίο `T` ή ένα πεζό `t`, που ακολουθείται +από το γράμμα `h`, που με τη σειρά του ακολουθείται από το γράμμα `e`. + +
+"[Tt]he" => The car parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/2ITLQ4/1) + +Όμως, μια τελεία μέσα σε ένα σύνολο χαρακτήρων, είναι μια κλασική τελεία και δεν εκλαμβάνεται +ως μεταχαρακτήρας. Η κανονική έκφραση `ar[.]` αναπαριστά: ένα πεζό γράμμα `a`, που +ακολουθείται από το γράμμα `r`, που με την σειρά του ακολουθείται από τον χαρακτήρα `.`. + +
+"ar[.]" => A garage is a good place to park a car. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/wL3xtE/1) + +### 2.2.1 Σύνολο Χαρακτήρων προς Εξαίρεση + +Γενικά, το σύμβολο ^ αναπαριστά την αρχή ενός string, αλλά όταν βρίσκεται +μέσα σε αγκύλες ([] όχι {}), αναπαριστά ένα σύνολο χαρακτήρων που θα εξαιρεθούν από την διαδικασία +της αναζήτησης. Για παράδειγμα, η κανονική έκφραση `[^c]ar` αναπαριστά: οποιονδήποτε χαρακτήρα +εκτός από το `c`, που ακολουθείται από τον χαρακτήρα `a`, που ακολουθείται από +το `r`. + +
+"[^c]ar" => The car parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/nNNlq3/1) + +## 2.3 Επαναλήψεις + +Οι μεταχαρακτήρες `+`, `*` και `?`, χρησιμοποιούνται για να προσδιοριστεί +το πόσες φορές επαναλαμβάνεται ένα υπό-μοτίβο χαρακτήρων μέσα στο string εισόδου. Αυτοί οι +μεταχαρακτήρες συμπεριφέρονται διαφορετικά ανάλογα με την περίσταση. + +### 2.3.1 Ο Αστερίσκος + +Το σύμβολο `*` ψάχνει για μηδέν ή παραπάνω επαναλήψεις της έκφρασης +που βρίσκεται πριν από αυτό. Η κανονική έκφραση `a*` αναπαριστά: αναζήτηση για μηδέν ή παραπάνω +επαναλήψεις του πεζού χαρακτήρα `a`. Όταν το σύμβολο * βρίσκεται μετά από ένα σύνολο +ή κλάση χαρακτήρων, τότε εντοπίζει ολόκληρο το σύνολο όσες φορές και αν υπάρχει σε μια +γραμμή. Για παράδειγμα, η κανονική έκφραση `[a-z]*` αναπαριστά: οποιονδήποτε συνδυασμό +πεζών γραμμάτων που βρίσκονται στην σειρά. + +
+"[a-z]*" => The car parked in the garage #21. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/7m8me5/1) + +Το σύμβολο `*` μπορεί να χρησιμοποιηθεί σε συνδυασμό με τον χαρακτήρα `.` ώστε +να αναζητηθεί μια ακολουθία χαρακτήρων. Μπορεί επίσης να χρησιμοποιηθεί με τον +χαρακτήρα κενού `\s` ώστε να αναζητηθεί μια ακολουθία κενών. Για παράδειγμα, η +έκφραση `\s*cat\s*` αναπαριστά: μηδέν ή περισσότερα κενά, που ακολουθούνται από +τον πεζό χαρακτήρα `c`, που ακολουθείται από τον πεζό χαρακτήρα `a`, που ακολουθείται + από τον πεζό χαρακτήρα `t`, που ακολουθείται από μηδέν ή περισσότερα κενά. + +
+"\s*cat\s*" => The fat cat sat on the concatenation. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/gGrwuz/1) + +### 2.3.2 Το Σύμβολο της Πρόσθεσης + +Με σύμβολο `+` γίνεται αναζήτηση για μία ή περισσότερες επαναλήψεις του προηγούμενου του χαρακτήρα. +Για παράδειγμα, η κανονική έκφραση `c.+t` αναπαριστά: το πεζό γράμμα `c`, που ακολουθείται +από τουλάχιστον ένα χαρακτήρα, που ακολουθείται από το πεζό γράμμα `t`. Πρέπει να διευκρινίσουμε +ότι το `t` είναι το τελευταίο `t` της πρότασης. + +
+"c.+t" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/Dzf9Aa/1) + +### 2.3.3 Το Ερωτηματικό + +Σε μια κανονική έκφραση, ο μεταχαρακτήρας `?` κάνει τον χαρακτήρα που βρίσκεται πριν από αυτόν, +προαιρετικό ως προς την εύρεσή του. Έτσι γίνεται αναζήτηση για μηδέν ή παραπάνω περιπτώσεις εμφάνισης +του προηγούμενου από το ερωτηματικό χαρακτήρα. Για παράδειγμα, η κανονική έκφραση `[T]?he` αναπαριστά: +το προαιρετικό κεφαλαίο `T`, που ακολουθείται από πεζό `h`, που ακολουθείται από +πεζό `e`. + +
+"[T]he" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/cIg9zm/1) + +
+"[T]?he" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/kPpO2x/1) + +## 2.4 Αγκύλες + +Οι αγκύλες στις κανονικές εκφράσεις ονομάζονται αλλιώς και "ποσοτικοποιητές" αφού +χρησιμοποιούνται για την εύρεση όλων επαναλήψεων ενός χαρακτήρα ή μιας +ομάδας χαρακτήρων μέσα σ'ένα κείμενο. Για παράδειγμα, η κανονική έκφραση `[0-9]{2,3}` αναπαριστά: την +αναζήτηση τουλάχιστον 2 ψηφίων το ένα μετά το άλλο αλλά όχι παραπάνω από 3 (στους χαρακτήρες από το 0 ως το 9). + +
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/juM86s/1) + +Μπορούμε να παραλείψουμε τον δεύτερο αριθμό. Για παράδειγμα, η κανονική έκφραση +`[0-9]{2,}` αναπαριστά: την αναζήτηση 2 ή περισσότερων ψηφίων το ένα μετά το άλλο. Αν αφαιρέσουμε και +την κόμμα, τότε η κανονική έκφραση `[0-9]{3}` αναπαριστά: την σύγκριση ακριβώς 3 ψηφίων. + +
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/Gdy4w5/1) + +
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/Sivu30/1) + +## 2.5 Ομάδα Χαρακτήρων + +Μια ομάδα χαρακτήρων είναι μια ομάδα υπό-μοτίβων που γράφονται μέσα σε παρενθέσεις `(...)`. +Όπως είπαμε και προηγουμένως, σε μια κανονική έκφραση, αν τοποθετήσουμε έναν ποσοτικοποιητή μετά από έναν +χαρακτήρα, τότε αυτός ο χαρακτήρας θα βρεθεί όσες φορές και αν υπάρχει μέσα στο κείμενο στο οποίο +εκτελείται η αναζήτηση. Παρομοίως, αν τον βάλουμε μετά από μια ομάδα χαρακτήρων. Για παράδειγμα, +η κανονική έκφραση `(ab)*` ταιριάζει με μηδέν ή παραπάνω επαναλήψεις του χαρακτήρα +"ab". Ακόμη, μπορούμε να χρησιμοποιήσουμε τον μεταχαρακτήρα εναλλαγής `|` μέσα σε μια ομάδα χαρακτήρων. +Για παράδειγμα, η κανονική έκφραση `(c|g|p)ar` αναπαριστά: τους πεζούς χαρακτήρες `c`, +`g` ή `p`, που ακολουθούνται από τον χαρακτήρα `a`, που ακολουθείται από τον χαρακτήρα `r`. + +
+"(c|g|p)ar" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/tUxrBG/1) + +## 2.6 Εναλλαγή + +Στις κανονικές εκφράσεις, η κάθετη γραμμή `|`, ορίζει μια εναλλαγή. +Έτσι δηλαδή γίνεται μια επιλογή μεταξύ πολλαπλών εκφράσεων. Ίσως σκέφτεστε ότι +η εναλλαγή και τα σύνολα , λειτουργούν με τον ίδιο τρόπο. Αλλά η μεγάλη διαφορά τους +είναι ότι τα σύνολα χαρακτήρων δουλεύουν με χαρακτήρες ενώ η εναλλαγή με εκφράσεις. +Για παράδειγμα, η κανονική έκφραση `(T|t)he|car` αναπαριστά: τον κεφαλαίο χαρακτήρα `T` +ή τον πεζό χαρακτήρα `t`, που ακολουθείται από πεζό χαρακτήρα `h`, που ακολουθείται από +πεζό χαρακτήρα `e` ή πεζό χαρακτήρα `c`, που ακολουθείται από πεζό χαρακτήρα `a`, που +ακολουθείται από πεζό χαρακτήρα `r`. + +
+"(T|t)he|car" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/fBXyX0/1) + +## 2.7 Ειδικός Χαρακτήρας Διαφυγής + +Το σύμβολο `\` χρησιμοποιείται στις κανονικές εκφράσεις ώστε να αγνοηθεί η ειδική σημασία +που μπορεί να έχει ο χαρακτήρας που βρίσκεται μετά από αυτό. Αυτό μας επιτρέπει να αναζητήσουμε ένα +σύμβολο, συμπεριλαμβανομένων των ειδικών χαρακτήρων `{ } [ ] / \ + * . $ ^ | ?`. Άρα για αναζήτηση +ειδικών χαρακτήρων, τοποθετούμε ακριβώς πριν το σύμβολο `\`. + +Για παράδειγμα, η κανονική έκφραση `.` χρησιμοποιείται για αναζήτηση οποιουδήποτε χαρακτήρα εκτός από +αυτόν για την νέα γραμμή. Η παρακάτω κανονική έκφραση ψάχνει για το σύμβολο της τελείας `.` σε ένα string εισόδου. Η +`(f|c|m)at\.?` αναπαριστά: ένα πεζό γράμμα `f`, `c` ή `m`, που ακολουθείται από τον πεζό τον +χαρακτήρα `a`, που ακολουθείται από το πεζό γράμμα `t`, που ακολουθείται από τον προαιρετικό χαρακτήρα `.`. + +
+"(f|c|m)at\.?" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/DOc5Nu/1) + +## 2.8 Σύμβολα "Άγκυρες" + +Σε μια κανονική έκφραση, χρησιμοποιούμε "άγκυρες" για να ελέγξουμε αν το σύμβολο που αναζητάμε είναι +το πρώτο ή το τελευταίο σύμβολο ενός string. Οι άγκυρες είναι δύο τύπων: +Πρώτα είναι το σύμβολο `^` που ελέγχει αν ο χαρακτήρας που ψάχνουμε είναι ο πρώτος +χαρακτήρας της εισόδου και μετά είναι το σύμβολο του δολαρίου `$` που ελέγχει αν ο χαρακτήρας που +ψάχνουμε είναι ο τελευταίος στο string εισόδου. + +### 2.8.1 Το Σύμβολο ^ + +Το σύμβολο `^` χρησιμοποιείται για να ελέγξουμε αν ο χαρακτήρας που ψάχνουμε είναι ο πρώτος χαρακτήρας +του string εισόδου. Αν δοκιμάσουμε την κανονική έκφραση `^a` (ψάχνουμε δηλαδή αν το a είναι το πρώτο +σύμβολο) στο string εισόδου `abc`, τότε βλέπουμε ότι όντως το `a` είναι ο πρώτος χαρακτήρας. Αλλά +αν δοκιμάσουμε την κανονική έκφραση `^b` στην παραπάνω είσοδο, τότε δεν θα πάρουμε κάποιο αποτέλεσμα. +Αυτό συμβαίνει επειδή στην έκφραση `abc` το "b" δεν είναι ο πρώτος χαρακτήρας. Ας ρίξουμε μια ματιά +στην κανονική έκφραση `^(T|t)he` η οποία ψάχνει για: έναν κεφαλαίο χαρακτήρα `T` ή έναν +πεζό χαρακτήρα `t` που να είναι ο πρώτος χαρακτήρας της εισόδου και να ακολουθείται από +έναν πεζό χαρακτήρα `h`, που ακολουθείται από έναν πεζό χαρακτήρα `e`. + +
+"(T|t)he" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/5ljjgB/1) + +
+"^(T|t)he" => The car is parked in the garage. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/jXrKne/1) + +### 2.8.2 Το Δολάριο + +Το σύμβολο του δολαρίου `$` χρησιμοποιείται για να ελέγξουμε αν ο χαρακτήρας που αναζητάμε είναι ο τελευταίος +χαρακτήρας του string εισόδου. Για παράδειγμα, η κανονική έκφραση `(at\.)$` αναπαριστά: έναν +πεζό χαρακτήρα `a`, που ακολουθείται από έναν πεζό χαρακτήρα `t`, που ακολουθείται από μια τελεία `.` +και όλα αυτά πρέπει να είναι οι τελευταίοι χαρακτήρες της εισόδου. + +
+"(at\.)" => The fat cat. sat. on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/y4Au4D/1) + +
+"(at\.)$" => The fat cat. sat. on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/t0AkOd/1) + +## 3. Συντομογραφίες Συνόλων Χαρακτήρων + +Οι κανονικές εκφράσεις χρησιμοποιούν κάποιες συντομογραφίες για τα σύνολα χαρακτήρων που +χρησιμοποιούνται πιο συχνά και έτσι γίνονται πιο εύκολες και βολικές για τον χρήστη. +Οι συντομογραφίες των συνόλων χαρακτήρων είναι οι παρακάτω: + +|Συντομογραφία|Περιγραφή| +|:----:|----| +|.|Αναζήτηση όλων των χαρακτήρων εκτός από αυτόν για νέα γραμμή| +|\w|Αναζήτηση αλφαριθμητικών χαρακτήρων: `[a-zA-Z0-9_]`| +|\W|Αναζήτηση μη αλφαριθμητικών χαρακτήρων: `[^\w]`| +|\d|Αναζήτηση στα ψηφία: `[0-9]`| +|\D|Αναζήτηση χαρακτήρων που δεν είναι αριθμοί: `[^\d]`| +|\s|Αναζήτηση του χαρακτήρα του κενού: `[\t\n\f\r\p{Z}]`| +|\S|Αναζήτηση χαρακτήρων που δεν είναι το κενό: `[^\s]`| + +## 4. Αναζήτηση + +Η προς τα μπροστά και προς τα πίσω αναζήτηση, είναι συγκεκριμένοι τύποι συνόλων που +ονομάζονται ***non-capturing groups*** (Χρησιμοποιούνται για αναζήτηση κάποιου μοτίβου +αλλά δεν συμπεριλαμβάνονται στην λίστα των χαρακτήρων που ψάχνουμε). Οι αναζητήσεις προς τα μπροστά, χρησιμοποιούνται +όταν το μοτίβο έχει πριν ή μετά ένα ακόμη μοτίβο. Για παράδειγμα, αν θέλουμε να βρούμε όλους +τους αριθμούς που βρίσκονται μετά τον χαρακτήρα `$` στο παρακάτω string +`$4.44 and $10.88`, τότε θα χρησιμοποιήσουμε την κανονική έκφραση `(?<=\$)[0-9\.]*` +η οποία: βρίσκει όλους τους αριθμούς που βρίσκονται μετά από το σύμβολο`$` και περιέχουν τον χαρακτήρα `.` . +Παρακάτω μπορείτε να δείτε τους τύπους αναζήτησης στις κανονικές εκφράσεις: + +|Σύμβολο|Περιγραφή| +|:----:|----| +|?=|Θετική Αναζήτηση προς τα Μπροστά| +|?!|Αρνητική Αναζήτηση προς τα Μπροστά| +|?<=|Θετική Αναζήτηση προς τα Πίσω| +|? +"(T|t)he(?=\sfat)" => The fat cat sat on the mat. + + +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/IDDARt/1) + +### 4.2 Αρνητική Αναζήτηση προς τα Μπροστά + +Η αρνητική αναζήτηση προς τα μπροστά, χρησιμοποιείται όταν θέλουμε όλες τις εκφράσεις που +ταιριάζουν με το μοτίβο που αναζητάμε, που όμως δεν ακολουθούνται από κάποιο άλλο μοτίβο. +Αυτή η αναζήτηση ορίζεται όπως και η παραπάνω αλλά αντί για το σύμβολο `=` χρησιμοποιούμε το `!`, +με αυτό τον τρόπο: `(?!...)`. Ας δούμε την κανονική έκφραση `(T|t)he(?!\sfat)` η οποία: επιστρέφει +όλα τα `The` ή `the` που υπάρχουν στο string εισόδου και δεν ακολουθούνται από την λέξη `fat` +μετά από κενό. + +
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/V32Npg/1) + +### 4.3 Θετική Αναζήτηση προς τα Πίσω + +Η θετική αναζήτηση προς τα πίσω, χρησιμοποιείται όταν θέλουμε να βρούμε όλες τις εκφράσεις που +ταιριάζουν με ένα μοτίβο (που ορίζουμε εμείς) που βρίσκεται πριν από αυτές. Αυτή η αναζήτηση χρησιμοποιεί τα +σύμβολα `(?<=...)`. Για παράδειγμα, η κανονική έκφραση `(?<=(T|t)he\s)(fat|mat)`: +επιστρέφει όλες τις λέξεις `fat` ή `mat` που βρίσκονται μετά την λέξη `The` ή `the`. + +
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/avH165/1) + +### 4.4 Αρνητική Αναζήτηση προς τα Πίσω + +Η αρνητική αναζήτηση προς τα πίσω χρησιμοποιείται όταν θέλουμε να βρούμε όλες τις εκφράσεις που +ταιριάζουν με το μοτίβο αναζήτησης, χωρίς όμως να υπάρχει άλλο μοτίβο (που ορίζουμε εμείς) πριν από αυτές. +Αυτή η αναζήτηση χρησιμοποιεί τα σύμβολα `(? +"(?<!(T|t)he\s)(cat)" => The cat sat on cat. + + +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/8Efx5G/1) + +## 5. Σημαίες + +Οι σημαίες καλούνται αλλιώς και τροποποιητές αφού επηρεάζουν τον τρόπο αναζήτησης των +κανονικών εκφράσεων. Μπορούν να χρησιμοποιηθούν με οποιαδήποτε σειρά και σε οποιονδήποτε συνδυασμό +συμβόλων και είναι αναπόσπαστο κομμάτι των RegExp. + +|Σημαία|Περιγραφή| +|:----:|----| +|i|Αλλάζει την αναζήτηση ώστε να μην ενδιαφέρεται για τον αν τα γράμματα είναι πεζά ή κεφαλαία.| +|g|Καθολική αναζήτηση: Ψάχνει ένα μοτίβο σε ολόκληρο το string εισόδου.| +|m|Πολλαπλές γραμμές: Οι μεταχαρακτήρες άγκυρας λειτουργούν σε όλες τις γραμμές.| + +### 5.1 Χωρίς Διάκριση Πεζών-Κεφαλαίων + +Ο τροποποιητής `i` χρησιμοποιείται για αναζήτηση που δεν κάνει διακρίσεις μεταξύ πεζών +και κεφαλαίων γραμμάτων. Για παράδειγμα, η κανονική έκφραση `/The/gi` αναπαριστά: ένα +κεφαλαίο γράμμα `T`, που ακολουθείται από έναν πεζό χαρακτήρα `h`, που ακολουθείται από τον χαρακτήρα `e`. +Στο τέλος της κανονικής έκφρασης υπάρχει η σημαία `i` η οποία λέει στην κανονική +έκφραση να αγνοήσει το αν ένας χαρακτήρας είναι πεζός ή κεφαλαίος. Όπως βλέπετε υπάρχει και η +σημαία `g` ώστε η αναζήτηση του μοτίβου να γίνει σε όλο το string εισόδου. + +
+"The" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/dpQyf9/1) + +
+"/The/gi" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/ahfiuh/1) + +### 5.2 Καθολική Αναζήτηση + +Ο τροποποιητής `g`χρησιμοποιείται για καθολική αναζήτηση (για να βρεθούν δηλαδή όλες οι +περιπτώσεις που ταιριάζουν με το μοτίβο αναζήτησης και να μην σταματήσει στην πρώτη εύρεση). Για παράδειγμα, η +κανονική έκφραση `/.(at)/g` αναπαριστά: οποιονδήποτε χαρακτήρα εκτός από αυτόν για +νέα γραμμή, που ακολουθείται από τον πεζό χαρακτήρα `a`, που ακολουθείται από τον πεζό +χαρακτήρα `t` και αφού στο τέλος της κανονικής έκφρασης υπάρχει η σημαία `g`, +θα βρεθούν όλες οι περιπτώσεις που περιγράφονται από την παραπάνω κανονική έκφραση και όχι μόνο +η πρώτη (που είναι η προκαθορισμένη συμπεριφορά όταν δεν υπάρχει η σημαία `g`). + +
+"/.(at)/" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/jnk6gM/1) + +
+"/.(at)/g" => The fat cat sat on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/dO1nef/1) + +### 5.3 Πολλές Γραμμές + +Ο τροποποιητής `m` χρησιμοποιείται για αναζήτηση σε πολλές γραμμές. Όπως είπαμε +προηγουμένως, οι άγκυρες `(^, $)` χρησιμοποιούνται για να ελέγξουμε αν ένα μοτίβο +βρίσκεται στην αρχή ή στο τέλος του string εισόδου. Αν θέλουμε οι άγκυρες αυτές να +ισχύουν για κάθε γραμμή, τότε χρησιμοποιούμε την σημαία `m`. Για παράδειγμα, η +κανονική έκφραση `/at(.)?$/gm` αναπαριστά: τον πεζό χαρακτήρα `a`, που ακολουθείται +από τον πεζό χαρακτήρα `t` και προαιρετικά οτιδήποτε άλλο εκτός από τον χαρακτήρα για +νέα γραμμή. Και αφού υπάρχει και η σημαία `m`, η κανονική έκφραση θα αναζητήσει +το μοτίβο στο τέλος κάθε γραμμής του string. + +
+"/.at(.)?$/" => The fat + cat sat + on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/hoGMkP/1) + +
+"/.at(.)?$/gm" => The fat + cat sat + on the mat. ++ +[Δοκιμή της κανονικής έκφρασης](https://regex101.com/r/E88WE2/1) + +## Contribution + +* Report issues +* Open pull request with improvements +* Spread the word +* Reach out to me directly at ziishaned@gmail.com or [](https://twitter.com/ziishaned) + +## License + +MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com) diff --git a/README-ja.md b/README-ja.md index ca94528..126cde8 100644 --- a/README-ja.md +++ b/README-ja.md @@ -12,6 +12,7 @@ * [日本語](README-ja.md) * [한국어](README-ko.md) * [Turkish](README-tr.md) +* [Greek](README-gr.md) ## 正規表現とは diff --git a/README-ko.md b/README-ko.md index c216f72..7d0097e 100644 --- a/README-ko.md +++ b/README-ko.md @@ -12,6 +12,7 @@ * [日本語](README-ja.md) * [한국어](README-ko.md) * [Turkish](README-tr.md) +* [Greek](README-gr.md) ## 정규표현식이란 무엇인가? diff --git a/README-pt_BR.md b/README-pt_BR.md index 4f1e1d8..de90728 100644 --- a/README-pt_BR.md +++ b/README-pt_BR.md @@ -12,6 +12,7 @@ * [中文版](README-cn.md) * [日本語](README-ja.md) * [한국어](README-ko.md) +* [Greek](README-gr.md) ## O que é uma Expressão Regular? diff --git a/README-tr.md b/README-tr.md index 837ec94..956e85e 100644 --- a/README-tr.md +++ b/README-tr.md @@ -12,6 +12,7 @@ * [日本語](README-ja.md) * [한국어](README-ko.md) * [Turkish](README-tr.md) +* [Greek](README-gr.md) ## Düzenli İfade Nedir? diff --git a/README.md b/README.md index 2fa1b74..7abb97d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ * [日本語](README-ja.md) * [한국어](README-ko.md) * [Turkish](README-tr.md) +* [Greek](README-gr.md) ## What is Regular Expression?