Σγουρές αγκύλες στις κανονικές εκφράσεις PHP

Οι τελεστές +, *, ? είναι χρήσιμοι, ωστόσο, δεν μπορούμε να καθορίσουμε συγκεκριμένο αριθμό επαναλήψεων με τη βοήθειά τους. Σε αυτή την περίπτωση θα σας βοηθήσει ο τελεστής {}.

Λειτουργεί ως εξής: {5} - πέντε επαναλήψεις, {2,5} - επαναλαμβάνεται από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,} - επαναλαμβάνεται δύο ή περισσότερες φορές.

Παράδειγμα

Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' μία ή δύο φορές, γράμμα 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,2}x#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'xx ! ! xaaax'

Παράδειγμα

Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' δύο φορές και περισσότερο, γράμμα 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{2,}x#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'xx xax ! !'

Παράδειγμα

Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' τρεις φορές, γράμμα 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{3}x#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'xx xax xaax !'

Παράδειγμα

Σε αυτό το παράδειγμα το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'a' δέκα φορές:

php<?php
  $str = 'aaa aaaaaaaaaa aaa';
  $res = preg_replace('#a{10}#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'aaa ! aaa'

Παράδειγμα

Σε αυτό το παράδειγμα ο συγγραφέας του κώδικα ήθελε αυτό το μοτίβο: γράμμα 'x', γράμμα 'a' τρεις φορές και λιγότερο, γράμμα 'x', αλλά, δυστυχώς, αυτό - {,3} - δεν λειτουργεί. Πρέπει να το ορίσουμε ρητά:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,3}x#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'xx ! ! !'

Παράδειγμα

Το μηδέν είναι επίσης επιτρεπτό:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{0,3}x#', '!', $str);
?>

Ως αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:

php'! ! ! !'

Πρακτικές ασκήσεις

Задание 1

Δίνεται η συμβολοσειρά:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές 'abba', 'abbba', 'abbbba' και μόνο αυτές.

Задание 2

Δίνεται η συμβολοσειρά:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται λιγότερες από τρεις φορές (συμπεριλαμβανομένου).

Задание 3

Δίνεται η συμβολοσειρά:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται περισσότερες από τέσσερις φορές (συμπεριλαμβανομένου).