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