Σύνολα χαρακτήρων σε κανονικές εκφράσεις PHP
Οι ομάδες χαρακτήρων \d και \w δεν είναι
πολύ ευέλικτες. Ακόμη και ένα τόσο απλό task,
όπως το βρες όλα τα γράμματα, αλλά όχι τους αριθμούς -
δεν μπορεί να επιλυθεί από αυτές. Για τέτοιες εργασίες
πρέπει να χρησιμοποιηθούν αγκύλες, οι οποίες αντιπροσωπεύουν
την πράξη OR.
Οι αγκύλες αντικαθιστούν έναν χαρακτήρα,
οποιονδήποτε από αυτούς που αναγράφονται μέσα. Για παράδειγμα,
έτσι: #x[abc]x# - λέμε ότι
στα άκρα πρέπει να υπάρχουν γράμματα x, και στη μέση
- ένας χαρακτήρας: ή 'a', ή 'b',
ή 'c'.
Μετά τις αγκύλες μπορούν να γραφτούν τελεστές
επανάληψης. Για παράδειγμα, έτσι: #x[abc]+x#
- λέμε ότι μέσα στα x μπορεί να υπάρχει
οποιοσδήποτε αριθμός χαρακτήρων 'a', 'b'
και 'c' - σε οποιουσδήποτε συνδυασμούς.
Μπορείτε όχι μόνο να απαριθμήσετε χαρακτήρες, αλλά να δημιουργήσετε
ομάδες χαρακτήρων, γράφοντας μεταξύ δύο χαρακτήρων
παύλα. Για παράδειγμα, έτσι: #[a-d]#
- παίρνουμε όλους τους χαρακτήρες από 'a' έως
'd'.
Ας δούμε παραδείγματα.
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'a'
έως 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! ! x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'a'
έως 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! xmx x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'A'
έως 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'xax ! xcx x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοσδήποτε αριθμός από 0 έως 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'xax ! ! ! x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοσδήποτε αριθμός από 3 έως 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'xax x1x ! ! x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'a'
έως 'z' ή αριθμός από 1 έως 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! ! ! x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'a'
έως 'z' ή γράμμα από 'A' έως
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! ! x5x x@x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x οποιοδήποτε γράμμα από 'a'
έως 'z' ή οι αριθμοί 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! ! ! x3x'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
μεταξύ των x γράμματα από 'a' έως 'z'
σε ποσότητα από 1 και περισσότερα:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'xx ! ! ! x123x xa3x'
Παράδειγμα
Ας κάνουμε έτσι ώστε ο αριθμός των γραμμάτων να μπορεί να είναι και μηδέν:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα γραφτεί το εξής:
'! ! ! x123x xa3x'
Πρακτικά tasks
Δίνεται string:
<?php
$str = 'aba aea aca aza axa';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - το γράμμα 'b', 'e'
ή 'x'.
Δίνεται string:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - αριθμός από 3-αρι έως 6-αρι.
Δίνεται string:
<?php
$str = 'aba aea afa aha aga';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - γράμμα από a έως g.
Δίνεται string:
<?php
$str = 'aba aea afa aha aga';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - γράμμα από a έως f και από j έως z.
Δίνεται string:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - γράμμα από a έως f και από A έως D.
Δίνεται string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - μικρά λατινικά γράμματα,
χωρίς να θίξει τα υπόλοιπα.
Δίνεται string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - μικρά και κεφαλαία λατινικά
γράμματα, χωρίς να θίξει τα υπόλοιπα.
Δίνεται string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Γράψτε μια κανονική έκφραση, που θα βρει σύμφωνα με το ακόλουθο
μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και μεταξύ τους - μικρά λατινικά γράμματα
και αριθμοί, χωρίς να θίξει τα υπόλοιπα.