Σγουρές αγκύλες στις κανονικές εκφράσεις PHP
Οι τελεστές +, *, ? είναι χρήσιμοι,
ωστόσο, δεν μπορούμε να καθορίσουμε συγκεκριμένο
αριθμό επαναλήψεων με τη βοήθειά τους. Σε αυτή την περίπτωση θα σας βοηθήσει
ο τελεστής {}.
Λειτουργεί ως εξής: {5}
- πέντε επαναλήψεις, {2,5} - επαναλαμβάνεται
από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,}
- επαναλαμβάνεται δύο ή περισσότερες φορές.
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' μία
ή δύο φορές, γράμμα 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'xx ! ! xaaax'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' δύο
φορές και περισσότερο, γράμμα 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'xx xax ! !'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' τρεις
φορές, γράμμα 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'xx xax xaax !'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'a' δέκα φορές:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'aaa ! aaa'
Παράδειγμα
Σε αυτό το παράδειγμα ο συγγραφέας του κώδικα ήθελε αυτό το μοτίβο:
γράμμα 'x', γράμμα 'a' τρεις
φορές και λιγότερο, γράμμα 'x',
αλλά, δυστυχώς, αυτό - {,3} - δεν
λειτουργεί. Πρέπει να το ορίσουμε ρητά:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'xx ! ! !'
Παράδειγμα
Το μηδέν είναι επίσης επιτρεπτό:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'! ! ! !'
Πρακτικές ασκήσεις
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'abba', 'abbba', 'abbbba'
και μόνο αυτές.
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b' εμφανίζεται
λιγότερες από τρεις φορές (συμπεριλαμβανομένου).
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b' εμφανίζεται
περισσότερες από τέσσερις φορές (συμπεριλαμβανομένου).