Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

1.4 Το RegEx, ή Κανονική Έκφραση στην Python

Το RegEx, ή Κανονική Έκφραση, είναι μια ακολουθία χαρακτήρων που σχηματίζει ένα πρότυπο αναζήτησης.

Το RegEx μπορεί να χρησιμοποιηθεί για να ελέγξει αν μια συμβολοσειρά περιέχει το καθορισμένο πρότυπο αναζήτησης.
Το Python έχει ένα ενσωματωμένο πακέτο που ονομάζεται re, το οποίο μπορεί να χρησιμοποιηθεί για να δουλέψετε με Κανονικές Εκφράσεις.

Εισαγωγή της ενότητας re:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
import re
import re

Ο κώδικας θα είναι στα Αγγλικά, καθώς και το περιεχόμενο της print(), ενώ τα υπόλοιπα θα είναι στα Ελληνικά:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "The string is an example"
pattern = "The string"
# Χρησιμοποιήστε τη μέθοδο search() για να βρείτε αν το πρότυπο υπάρχει στο κείμενο
match = re.search(pattern, text)
if match:
print("Pattern found in the text!")
else:
print("Pattern NOT found in the text!")
import re text = "The string is an example" pattern = "The string" # Χρησιμοποιήστε τη μέθοδο search() για να βρείτε αν το πρότυπο υπάρχει στο κείμενο match = re.search(pattern, text) if match: print("Pattern found in the text!") else: print("Pattern NOT found in the text!")
import re

text = "The string is an example"
pattern = "The string"

# Χρησιμοποιήστε τη μέθοδο search() για να βρείτε αν το πρότυπο υπάρχει στο κείμενο
match = re.search(pattern, text)

if match:
    print("Pattern found in the text!")
else:
    print("Pattern NOT found in the text!")

Σε αυτό το παράδειγμα, χρησιμοποιούμε τη μέθοδο search() της ενότητας re για να ελέγξουμε αν το πρότυπο υπάρχει στη συμβολοσειρά “text”. Εάν το πρότυπο βρεθεί, το πρόγραμμα θα εμφανίσει “Pattern found in the text!”, διαφορετικά θα εμφανίσει “Pattern NOT found in the text!”.

Συναρτήσεις RegEx
Το module re προσφέρει μια σειρά από συναρτήσεις που μας επιτρέπουν να αναζητήσουμε μια συμβολοσειρά για ταίριασμα και παράδειγμα:

  1. findall() – Επιστρέφει μια λίστα που περιέχει όλα τα ταιριάσματα.
  2. search() – Επιστρέφει ένα αντικείμενο Match αν βρεθεί ένα ταίριασμα κάπου στη συμβολοσειρά.
  3. split() – Επιστρέφει μια λίστα όπου η συμβολοσειρά έχει χωριστεί σε κάθε σημείο όπου βρέθηκε το πρότυπο.
  4. sub() – Αντικαθιστά ένα ή περισσότερα ταιριάσματα με μια συμβολοσειρά.

[adinserter block=”2″]

  1. findall()
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"
# Χρησιμοποιήστε την findall() για να βρείτε όλες τις εμφανίσεις του προτύπου
matches = re.findall(pattern, text)
print("Matches:", matches)
import re text = "The weather today is sunny, and tomorrow will be rainy." pattern = "\\b[a-zA-Z]*day\\b" # Χρησιμοποιήστε την findall() για να βρείτε όλες τις εμφανίσεις του προτύπου matches = re.findall(pattern, text) print("Matches:", matches)
import re

text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"

# Χρησιμοποιήστε την findall() για να βρείτε όλες τις εμφανίσεις του προτύπου
matches = re.findall(pattern, text)
print("Matches:", matches)
  1. search()
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"
# Χρησιμοποιήστε την search() για να βρείτε την πρώτη εμφάνιση του προτύπου
match = re.search(pattern, text)
if match:
print("Match found:", match.group())
else:
print("No match found")
import re text = "The weather today is sunny, and tomorrow will be rainy." pattern = "\\b[a-zA-Z]*day\\b" # Χρησιμοποιήστε την search() για να βρείτε την πρώτη εμφάνιση του προτύπου match = re.search(pattern, text) if match: print("Match found:", match.group()) else: print("No match found")
import re

text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"

# Χρησιμοποιήστε την search() για να βρείτε την πρώτη εμφάνιση του προτύπου
match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("No match found")
  1. split()
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b,\\b"
# Χρησιμοποιήστε την split() για να χωρίσετε τη συμβολοσειρά όπου βρέθηκε το πρότυπο
split_text = re.split(pattern, text)
print("Split text:", split_text)
import re text = "The weather today is sunny, and tomorrow will be rainy." pattern = "\\b,\\b" # Χρησιμοποιήστε την split() για να χωρίσετε τη συμβολοσειρά όπου βρέθηκε το πρότυπο split_text = re.split(pattern, text) print("Split text:", split_text)
import re

text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b,\\b"

# Χρησιμοποιήστε την split() για να χωρίσετε τη συμβολοσειρά όπου βρέθηκε το πρότυπο
split_text = re.split(pattern, text)
print("Split text:", split_text)
  1. sub()
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"
replacement = "XXX"
# Χρησιμοποιήστε την sub() για να αντικαταστήσετε τις εμφανίσεις του προτύπου με τη συμβολοσειρά αντικατάστασης
substituted_text = re.sub(pattern, replacement, text)
print("Substituted text:", substituted_text)
import re text = "The weather today is sunny, and tomorrow will be rainy." pattern = "\\b[a-zA-Z]*day\\b" replacement = "XXX" # Χρησιμοποιήστε την sub() για να αντικαταστήσετε τις εμφανίσεις του προτύπου με τη συμβολοσειρά αντικατάστασης substituted_text = re.sub(pattern, replacement, text) print("Substituted text:", substituted_text)
import re

text = "The weather today is sunny, and tomorrow will be rainy."
pattern = "\\b[a-zA-Z]*day\\b"
replacement = "XXX"

# Χρησιμοποιήστε την sub() για να αντικαταστήσετε τις εμφανίσεις του προτύπου με τη συμβολοσειρά αντικατάστασης
substituted_text = re.sub(pattern, replacement, text)
print("Substituted text:", substituted_text)

Κάθε παράδειγμα χρησιμοποιεί την αντίστοιχη συνάρτηση για να επιτελέσει μια διαφορετική εργασία με το πρότυπο και τη συμβολοσειρά.

Ακολουθεί ένας πίνακας με μεταχαρακτήρες και παραδείγματα:

ΜεταχαρακτήραςΠεριγραφήΠαράδειγμα ΠροτύπουΤαιριάζει με
.Οποιοσδήποτε χαρακτήρας.a“ba”, “ca”, “da”, …
^Έναρξη της συμβολοσειράς^Ηello“Hello world”, “Hello Python”
$Τέλος της συμβολοσειράςworld$“Hello world”, “Beautiful world”
*Μηδέν ή περισσότερα επαναλήψεις του προηγούμενου χαρακτήραa*“”, “a”, “aa”, “aaa”, …
+Μία ή περισσότερες επαναλήψεις του προηγούμενου χαρακτήραa+“a”, “aa”, “aaa”, …
?Μηδέν ή μία επανάληψη του προηγούμενου χαρακτήραa?“”, “a”
{n}n επαναλήψεις του προηγούμενου χαρακτήραa{2}“aa”
{n,m}Από n έως m επαναλήψεις του προηγούμενου χαρακτήραa{2,4}“aa”, “aaa”, “aaaa”
|Λειτουργεί ως “ή” για να ταιριάξει με έναν από τους δύο χαρακτήρεςa|b“a”, “b”
()Δημιουργεί μια ομάδα χαρακτήρων(abc)+“abc”, “abcabc”, “abcabcabc”
\Χρησιμοποιείται για να γ

[adinserter block=”3″]

Συνεχίζοντας με τους μεταχαρακτήρες:

ΜεταχαρακτήραςΠεριγραφήΠαράδειγμα ΠροτύπουΤαιριάζει με
\AΈναρξη του κειμένου\AHello“Hello world”, “Hello Python”
\ZΤέλος του κειμένουworld\Z“Hello world”, “Beautiful world”
\bΌριο λέξης (κενό, τελεία, κόμμα κλπ.)\bword\b“word”, “The word is”, “a word.”
\BΜη όριο λέξης\Bword\B“words”, “wordplay”, “password”
\dΟποιοσδήποτε ψηφίο (0-9)\d“0”, “1”, “2”, …
\DΟποιοσδήποτε μη ψηφίο\D“a”, “b”, “c”, …
\sΟποιοσδήποτε κενό χαρακτήρα (space, tab, newline)\s” “, “\t”, “\n”
\SΟποιοσδήποτε μη κενό χαρακτήρα\S“a”, “b”, “c”, …
\wΟποιοσδήποτε λεκτικό χαρακτήρα (a-z, A-Z, 0-9, _)\w“a”, “A”, “1”, “_”
\WΟποιοσδήποτε μη λεκτικό χαρακτήρα\W“!”, “@”, “#”, …

Μπορείτε να χρησιμοποιήσετε αυτούς τους μεταχαρακτήρες για να δημιουργήσετε πρότυπα που να ταιριάζουν με τις αναγκές σας. Με τη χρήση του re module και των σχετικών συναρτήσεων, μπορείτε να εκτελέσετε αναζήΣυνεχίζοντας με τη χρήση του re module και των συναρτήσεων του, μπορείτε να εκτελέσετε αναζήτηση, αντικατάσταση, διαίρεση ή άλλες λειτουργίες σε συμβολοσειρές με βάση τα καθορισμένα πρότυπα. Ακολουθούν μερικά παραδείγματα:

  1. Εύρεση όλων των ταιριαστών συμβολοσειρών:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Το email του Γιάννη είναι giannis@example.com και του Νίκου nikos@example.org"
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
matches = re.findall(pattern, text)
print("Βρέθηκαν τα εξής emails:", matches)
import re text = "Το email του Γιάννη είναι giannis@example.com και του Νίκου nikos@example.org" pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' matches = re.findall(pattern, text) print("Βρέθηκαν τα εξής emails:", matches)
import re

text = "Το email του Γιάννη είναι giannis@example.com και του Νίκου nikos@example.org"
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
matches = re.findall(pattern, text)

print("Βρέθηκαν τα εξής emails:", matches)
  1. Αντικατάσταση κειμένου με βάση ένα πρότυπο:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Το κόστος είναι 35€ και τα έξοδα αποστολής 5€."
pattern = r'(\d+)€'
replacement = r'$1 USD'
result = re.sub(pattern, replacement, text)
print("Το αποτέλεσμα μετά την αντικατάσταση είναι:", result)
import re text = "Το κόστος είναι 35€ και τα έξοδα αποστολής 5€." pattern = r'(\d+)€' replacement = r'$1 USD' result = re.sub(pattern, replacement, text) print("Το αποτέλεσμα μετά την αντικατάσταση είναι:", result)
import re

text = "Το κόστος είναι 35€ και τα έξοδα αποστολής 5€."
pattern = r'(\d+)€'
replacement = r'$1 USD'

result = re.sub(pattern, replacement, text)
print("Το αποτέλεσμα μετά την αντικατάσταση είναι:", result)
  1. Διαίρεση συμβολοσειράς με βάση ένα πρότυπο:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Ο κωδικός πρόσβασης πρέπει να περιέχει: κεφαλαία γράμματα, πεζά γράμματα, αριθμούς και σύμβολα."
pattern = r'\W+'
words = re.split(pattern, text)
print("Η συμβολοσειρά διαχωρίστηκε στα εξής στοιχεία:", words)
import re text = "Ο κωδικός πρόσβασης πρέπει να περιέχει: κεφαλαία γράμματα, πεζά γράμματα, αριθμούς και σύμβολα." pattern = r'\W+' words = re.split(pattern, text) print("Η συμβολοσειρά διαχωρίστηκε στα εξής στοιχεία:", words)
import re

text = "Ο κωδικός πρόσβασης πρέπει να περιέχει: κεφαλαία γράμματα, πεζά γράμματα, αριθμούς και σύμβολα."
pattern = r'\W+'
words = re.split(pattern, text)

print("Η συμβολοσειρά διαχωρίστηκε στα εξής στοιχεία:", words)

Αυτά τα παραδείγματα δείχνουν πώς μπορείτε να χρησιμοποιήσετε το re module και τις συναρτήσεις του για να εκτελέσετε διάφορες εργασίες με συμβολοσειρές, όπως αναζήτηση, αντικατάσταση και διαίρεση, με βάση τα καθορισμένα πρότυπα. Η επιτυχής εφαρμογή των μεταχαρακτήρων και των συναρτήσεων του re module εξαρτάται από την κατανόηση των αναγκών σας και τη δημιουργία των κατάλληλων προτύπων για να ταιριάζουν με το κείμενο που θέλετε να επεξεργαστείτε.

Για να αυξήσετε την ευελιξία του κώδικα σας και να βελτιώσετε την απόδοση, μπορείτε να εξετάσετε τη χρήση των συναρτήσεων re.compile() και re.finditer(). Η συνάρτηση re.compile() σας επιτρέπει να δημιουργήσετε ένα προκαθορισμένο πρότυπο που μπορείτε να χρησιμοποιήσετε αργότερα για πολλαπλές αναζητήσεις, ενώ η συνάρτηση re.finditer() επιστρέφει έναν επαναληπτέα (iterable) αντικείμενο αντί για μια λίστα, επιτρέποντας σας να περιηγηθείτε στα αποτελέσματα με λιγότερη κατανάλωση μνήμης.

[adinserter block=”4″]

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

ΧαρακτήραςΠεριγραφήΠαράδειγμα
\AΈναρξη του κειμένου\AThe
\bΌριο λέξης\bThe\b
\BΜη όριο λέξης\BThe\B
\dΟποιοσδήποτε ψηφίο (0-9)\d
\DΟποιοσδήποτε μη ψηφίο\D
\sΟποιοσδήποτε κενό χαρακτήρας (space, tab, newline)\s
\SΟποιοσδήποτε μη κενό χαρακτήρας\S
\wΟποιοσδήποτε λεκτικό χαρακτήρα (a-z, A-Z, 0-9, _)\w
\WΟποιοσδήποτε μη λεκτικό χαρακτήρα\W
\ZΤέλος του κειμένουend\Z
\Ένα λεκτικό backslash\
\nΝέα γραμμή\n
\rΕπιστροφή καρέκλας\r
\tΣτοίχιση (tab)\t

Μπορείτε να χρησιμοποιήσετε αυτές τις ειδικές ακολουθίες για να δημιουργήσετε πιο περίπλοκα πρότυπα που ταιριάζουν με τις απαιτήσεις σας.

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

  1. Εύρεση όλων των λέξεων που ξεκινούν με ένα κεφαλαίο γράμμα:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Η Python είναι μια δημοφιλής γλώσσα προγραμματισμού. Είναι ευέλικτη και ισχυρή."
pattern = r'\b[A-ZΑ-Ω][a-zα-ω]*\b'
matches = re.findall(pattern, text)
print("Λέξεις που ξεκινούν με κεφαλαίο γράμμα:", matches)
import re text = "Η Python είναι μια δημοφιλής γλώσσα προγραμματισμού. Είναι ευέλικτη και ισχυρή." pattern = r'\b[A-ZΑ-Ω][a-zα-ω]*\b' matches = re.findall(pattern, text) print("Λέξεις που ξεκινούν με κεφαλαίο γράμμα:", matches)
import re

text = "Η Python είναι μια δημοφιλής γλώσσα προγραμματισμού. Είναι ευέλικτη και ισχυρή."
pattern = r'\b[A-ZΑ-Ω][a-zα-ω]*\b'
matches = re.findall(pattern, text)

print("Λέξεις που ξεκινούν με κεφαλαίο γράμμα:", matches)
  1. Εύρεση όλων των τηλεφωνικών αριθμών που ακολουθούν το πρότυπο (xxx) xxx-xxxx:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Οι αριθμοί τηλεφώνου είναι (123) 456-7890 και (987) 654-3210."
pattern = r'\(\d{3}\) \d{3}-\d{4}'
matches = re.findall(pattern, text)
print("Τηλεφωνικοί αριθμοί:", matches)
import re text = "Οι αριθμοί τηλεφώνου είναι (123) 456-7890 και (987) 654-3210." pattern = r'\(\d{3}\) \d{3}-\d{4}' matches = re.findall(pattern, text) print("Τηλεφωνικοί αριθμοί:", matches)
import re

text = "Οι αριθμοί τηλεφώνου είναι (123) 456-7890 και (987) 654-3210."
pattern = r'\(\d{3}\) \d{3}-\d{4}'
matches = re.findall(pattern, text)

print("Τηλεφωνικοί αριθμοί:", matches)
  1. Εύρεση των λέξεων που περιέχουν αριθμούς:


import re

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import re
text = "Οι κωδικοί πρόσβασης είναι pass1234, secret5678 και admin9012."
pattern = r'\b\w*\d\w*\b'
matches = re.findall(pattern, text)
print("ΛέξΛέξεις που περιέχουν αριθμούς:", matches)
import re text = "Οι κωδικοί πρόσβασης είναι pass1234, secret5678 και admin9012." pattern = r'\b\w*\d\w*\b' matches = re.findall(pattern, text) print("ΛέξΛέξεις που περιέχουν αριθμούς:", matches)
import re

text = "Οι κωδικοί πρόσβασης είναι pass1234, secret5678 και admin9012."
pattern = r'\b\w*\d\w*\b'
matches = re.findall(pattern, text)

print("ΛέξΛέξεις που περιέχουν αριθμούς:", matches)

Αυτά τα παραδείγματα αποδεικνύουν τη χρησιμότητα των ειδικών ακολουθιών στη δημιουργία προτύπων που μπορούν να αναγνωρίσουν και να επεξεργαστούν τα αναγκαία κείμενα. Όσο πιο εξοικειωθείτε με τις ειδικές ακολουθίες και τους μεταχαρακτήρες, τόσο πιο αποτελεσματικά θα μπορείτε να χειριστείτε και να επεξεργαστείτε το κείμενο με τη βιβλιοθήκη `re` της Python. Συνεχίζοντας να εξερευνάτε τη βιβλιοθήκη `re` και να εφαρμόζετε τα εργαλεία και τις τεχνικές που προσφέρει, θα αποκτήσετε περισσότερη εμπειρία και ικανότητα στον τομέα της επεξεργασίας κειμένου. Η επιτυχής χρήση των ειδικών ακολουθιών και των συναρτήσεων της βιβλιοθήκης `re` θα σας βοηθήσει να αντιμετωπίσετε ποικίλα προβλήματα κειμένου και να βελτιώσετε την απόδοση των προγραμμάτων σας.

Ένα σύνολο είναι μια ομάδα χαρακτήρων μέσα σε ένα ζεύγος αγκυλών [] με ειδική σημασία:

ΣύνολοΠεριγραφή
[arn]Επιστρέφει έναν από τους χαρακτήρες “a”, “r”, ή “n”
[a-n]Επιστρέφει έναν από τους χαρακτήρες μεταξύ “a” και “n” (αλφαβητικά)
[^arn]Επιστρέφει οποιονδήποτε χαρακτήρα εκτός από “a”, “r” και “n”
[+]Σε αυτήν την περίπτωση, το σύμβολο “+” δεν έχει την κανονική του σημασία. Στη θέση αυτή, αναφέρεται στον ίδιο το χαρακτήρα “+”

Τα σύνολα χρησιμοποιούνται για να προσδιορίσουν εύρη χαρακτήρων που θέλετε να συμπεριλάβετε ή να εξαιρέσετε από την αναζήτηση. Μπορούν να είναι πολύ χρήσιμα για τη δημιουργία πιο εξειδικευμένων και αποτελεσματικών προτύπων αναζήτησης.

Δωρεα μεσω Paypal

Για την κάλυψη αναγκών φιλοξενίας και δημιουργίας περιεχομένου.

κατηγοριες μαθηματων

Ιστορικο ενοτητων

top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων