ბრძანება 'ან' PHP-ის რეგულარულ გამოსახულებებში

ამ გაკვეთილში ჩვენ გავაანალიზებთ ბრძანებას |, რომელიც წარმოადგენს უფრო ძლიერ ვარიანტს ან შედარებით ბრძანებასთან []. ეს ბრძანება საშუალებას აძლევს რეგულარული გამოსახულება დაიყოს რამდენიმე ნაწილად. ამ შემთხვევაში, საძიებელი შეიძლება მოხვდეს ან ერთ ნაწილზე რეგულარული გამოსახულების, ან მეორეზე. მოდით შევხედოთ მაგალითებს.

მაგალითი

ამ მაგალითში ძიების შაბლონი ასეთია: სამი ასო 'a' ან სამი ასო 'b':

php<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

შედეგად ცვლადში ჩაიწერება შემდეგი:

php'! ! abb'

მაგალითი

ამ მაგალითში ძიების შაბლონი ასეთია: სამი ასო 'a' ან 1 და მეტი ასო 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

შედეგად ცვლადში ჩაიწერება შემდეგი:

php'! ! ! ! axx'

მაგალითი

ამ მაგალითში ძიების შაბლონი ასეთია: ერთი ან მეტი ასო ან სამი ციფრი:

php<?php
  $str = 'a ab abc 1 12 123';
  $res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>

შედეგად ცვლადში ჩაიწერება შემდეგი:

php'! ! ! 1 12 !'

მაგალითი

ვერტიკალური ხაზი შეუძლია რეგულარული გამოსახულება გაყოს არა მხოლოდ ორ ნაწილად, არამედ ნებისმიერი რაოდენობის ნაწილად:

php<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

შედეგად ცვლადში ჩაიწერება შემდეგი:

php'! ! ! ddd'

მაგალითი

თუ ვერტიკალური ხაზი მდებარეობს მრგვალ ფრჩხილებში, მაშინ 'ან' მუშაობს მხოლოდ ამ ფრჩხილების შიგნით. მაგალითისთვის მოდით ვიპოვოთ სტრიქონები შემდეგი შაბლონით: თავში стоит ან 'a', ან 'b' ერთი ან მეტი ჯერ, და შემდეგ ორი ასო 'x':

php<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

შედეგად ცვლადში ჩაიწერება შემდეგი:

php'! ! ! exx'

პრაქტიკული ამოცანები

Задание 1

მოცემულია სტრიქონი:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის სტრიქონებს შაბლონის მიხედვით: კიდეებზე დგას ასოები 'a', ხოლო მათ შორის - ან ასო 'e' ნებისმიერი რაოდენობით ან ასო 'x' ნებისმიერი რაოდენობით.

Задание 2

მოცემულია სტრიქონი:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის სტრიქონებს შაბლონის მიხედვით: კიდეებზე დგას ასოები 'a', ხოლო მათ შორის - ან ასო 'e' ორი ჯერ ან ასო 'x' ნებისმიერი რაოდენობით.