From 0c3228afabd23fc0829e5dff84a47175839f392b Mon Sep 17 00:00:00 2001 From: Maria Batsou Date: Tue, 12 Sep 2017 19:00:50 +0300 Subject: [PATCH] Greek translation (#95) * First commit * Greek Translation * Greek Translation --- README-cn.md | 1 + README-es.md | 1 + README-fr.md | 1 + README-gr.md | 552 ++++++++++++++++++++++++++++++++++++++++++++++++ README-ja.md | 1 + README-ko.md | 1 + README-pt_BR.md | 1 + README-tr.md | 1 + README.md | 1 + 9 files changed, 560 insertions(+) create mode 100644 README-gr.md 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 @@ +
+

+Learn Regex +


+ +## Μεταφράσεις: + +* [English](README.md) +* [Español](README-es.md) +* [Français](README-fr.md) +* [Português do Brasil](README-pt_BR.md) +* [中文版](README-cn.md) +* [日本語](README-ja.md) +* [한국어](README-ko.md) +* [Turkish](README-tr.md) +* [Greek](README-gr.md) + +## Τι είναι μια Κανονική Έκφραση (Regular Expression); + +> Μια κανονική έκφραση είναι μια ομάδα χαρακτήρων ή συμβόλων που χρησιμοποιούνται για την εύρεση ενός συγκεκριμένου μοτίβου χαρακτήρων μέσα σ'ένα κείμενο. + +Μια κανονική έκφραση, είναι μια σειρά χαρακτήρων τους οποίους αναζητούμε μέσα σε ένα κείμενο. Η αναζήτηση αυτή +ξεκινά από τα αριστερά και συνεχίζει προς τα δεξιά. Ο όρος "Κανονική Έκφραση" είναι κάπως μεγάλος οπότε πολύ συχνά +θα τον συναντήσετε στην συντομότερη μορφή του ως "regex" ή "regexp". Οι εκφράσεις αυτές χρησιμοποιούνται +για αντικατάσταση λέξεων μέσα σε κείμενο, για επικυρώσεις τύπων, για αποκοπή ενός κομματιού +string με βάση κάποιου μοτίβου αναζήτησης και για πολλά άλλα. + +Φανταστείτε ότι πρέπει να γράψουμε μια εφαρμογή και ότι θέλουμε να ορίσουμε κανόνες για την δημιουργία +ονόματος χρήστη (username). Σ'αυτή την περίπτωση, θέλουμε να επιτρέψουμε την χρήση γραμμάτων και +αριθμών καθώς και την παύλα και κάτω παύλα. Θέλουμε επίσης να περιορίσουμε τον αριθμό χαρακτήρων +του ονόματος χρήστη ώστε να μην φαίνεται μεγάλο και άσχημο. Για να το κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε +την παρακάτω κανονική έκφραση: + +

+

+ Regular expression +

+ +Η παραπάνω κανονική έκφραση θα δεχτεί ως σωστά τα ονόματα χρήστη `john_doe`, `jo-hn_doe` και +`john12_as`. Όμως δεν θα δεχτεί το `Jo` αφού περιέχει ένα κεφαλαίο γράμμα και είναι πολύ +μικρό. + +## Πίνακας Περιεχομένων + +- [Βασικά Μοτίβα Αναζήτησης](#1-Βασικά-Μοτίβα-Αναζήτησης) +- [Μεταχαρακτήρες](#2-Μεταχαρακτήρες) + - [Τελεία](#21-Τελεία) + - [Σύνολα Χαρακτήρων](#22-Σύνολα-Χαρακτήρων) + - [Σύνολο Χαρακτήρων προς Εξαίρεση](#221-Σύνολο-Χαρακτήρων-προς-Εξαίρεση) + - [Επαναλήψεις](#23-Επαναλήψεις) + - [Ο Αστερίσκος](#231-Ο-Αστερίσκος) + - [Το Σύμβολο της Πρόσθεσης](#232-Το-Σύμβολο-της-Πρόσθεσης) + - [Το Ερωτηματικό](#233-Το-Ερωτηματικό) + - [Αγκύλες](#24-Αγκύλες) + - [Ομάδα Χαρακτήρων](#25-Ομάδα-Χαρακτήρων) + - [Εναλλαγή](#26-Εναλλαγή) + - [Ειδικός Χαρακτήρας Διαφυγής](#27-Ειδικός-Χαρακτήρας-Διαφυγής) + - [Σύμβολα "Άγκυρες"](#28-Σύμβολα-"Άγκυρες") + - [Το Σύμβολο ^](#281-Το-Σύμβολο-^) + - [Το Δολάριο](#282-Το-Δολάριο) +- [Συντομογραφίες Συνόλων Χαρακτήρων](#3-Συντομογραφίες-Συνόλων-Χαρακτήρων) +- [Αναζήτηση](#4-Αναζήτηση) + - [Θετική Αναζήτηση προς τα Μπροστά](#41-Θετική-Αναζήτηση-προς-τα-Μπροστά) + - [Αρνητική Αναζήτηση προς τα Μπροστά](#42-Αρνητική-Αναζήτηση-προς-τα-Μπροστά) + - [Θετική Αναζήτηση προς τα Πίσω](#43-Θετική-Αναζήτηση-προς-τα-Πίσω) + - [Αρνητική Αναζήτηση προς τα Πίσω](#44-Αρνητική-Αναζήτηση-προς-τα-Πίσω) +- [Σημαίες](#5-Σημαίες) + - [Χωρίς Διάκριση Πεζών-Κεφαλαίων](#51-Χωρίς-Διάκριση-Πεζών-Κεφαλαίων) + - [Καθολική Αναζήτηση](#52-Καθολική-Αναζήτηση) + - [Πολλές Γραμμές](#53-Πολλές-Γραμμές) + +## 1. Βασικά Μοτίβα Αναζήτησης + +Μια κανονική έκφραση είναι απλώς ένα μοτίβο, δηλαδή μια σειρά χαρακτήρων, που χρησιμοποιούμε ώστε να κάνουμε +αναζήτηση σε ένα κείμενο (πχ για να βρούμε ένα γράμμα ή μια λέξη κλπ). Για παράδειγμα, η κανονική έκφραση `the` +αναπαριστά: το γράμμα `t`, ακολουθούμενο από το γράμμα `h`, ακολουθούμενο από το γράμμα `e`. + +
+"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 [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/ziishaned.svg?style=social&label=Follow%20%40ziishaned)](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?