Τελεστές Επανάληψης Χαρακτήρων σε Κανονικές Εκφράσεις
Υπάρχουν καταστάσεις όπου θέλουμε να υποδείξουμε
ότι ένας χαρακτήρας επαναλαμβάνεται έναν συγκεκριμένο αριθμό
φορών. Αν γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων,
μπορούμε απλά να τον γράψουμε πολλές φορές
- #aaaa#. Αλλά τι κάνουμε, αν θέλουμε
να πούμε κάτι τέτοιο: επαναλαμβάνεται μία ή περισσότερες
φορές?
Για αυτό υπάρχουν οι τελεστές (ποσοτικοποιητές)
επανάληψης: το συν + (μία ή περισσότερες φορές),
ο αστερίσκος * (μηδέν ή περισσότερες φορές) και
το ερωτηματικό ? (μηδέν ή μία φορά). Αυτοί
οι τελεστές δρουν στον χαρακτήρα που βρίσκεται μπροστά τους.
Ας δούμε τη λειτουργία αυτών των τελεστών με παραδείγματα.
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μία ή περισσότερες
φορές, γράμμα 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'xx ! ! ! xbx'
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μηδέν ή περισσότερες
φορές, γράμμα 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'! ! ! ! xbx'
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μηδέν ή μία
φορά, γράμμα 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'! ! xaax xbx'
Πρακτικές Ασκήσεις
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
σύμφωνα με το πρότυπο: γράμμα 'a', γράμμα 'b'
μία ή περισσότερες φορές, γράμμα 'a'.
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
σύμφωνα με το πρότυπο: γράμμα 'a', γράμμα 'b'
μηδέν ή περισσότερες φορές, γράμμα 'a'.
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
σύμφωνα με το πρότυπο: γράμμα 'a', γράμμα 'b'
μία φορά ή καμία, γράμμα 'a'.
Δίνεται η συμβολοσειρά:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aa', 'aba', 'abba',
'abbba', χωρίς να συμπεριλάβει τις 'abca'
και 'abea'.