PHP'de Düzenli İfadelerde 'veya' Komutu

Bu derste, regex'i birkaç parçaya bölmemize izin veren, [] komutuna kıyasla daha güçlü bir VEYA varyantını temsil eden | komutunu inceleyeceğiz. Aranan ifade, regex'in bir kısmına ya da diğer kısmına uyabilir. Hadi örneklerle görelim.

Örnek

Bu örnekte arama kalıbı şu şekildedir: üç 'a' harfi veya üç 'b' harfi:

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

Sonuç olarak değişkene aşağıdaki yazılacaktır:

php'! ! abb'

Örnek

Bu örnekte arama kalıbı şu şekildedir: üç 'a' harfi veya 1 ve daha fazla 'b' harfi:

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

Sonuç olarak değişkene aşağıdaki yazılacaktır:

php'! ! ! ! axx'

Örnek

Bu örnekte arama kalıbı şu şekildedir: bir veya daha fazla harf veya üç rakam:

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

Sonuç olarak değişkene aşağıdaki yazılacaktır:

php'! ! ! 1 12 !'

Örnek

Dikey çubuk regex'i iki parçaya değil, istediğiniz kadar parçaya bölebilir:

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

Sonuç olarak değişkene aşağıdaki yazılacaktır:

php'! ! ! ddd'

Örnek

Eğer dikey çubuk yuvarlak parantezlerin içinde yer alıyorsa, 'veya' işlemi sadece bu parantezlerin içinde geçerlidir. Örnek olarak, şu kalıba uyan dizeleri bulalım: başında bir veya daha fazla kez 'a' veya 'b' bulunur ve ardından iki tane 'x' harfi gelir:

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

Sonuç olarak değişkene aşağıdaki yazılacaktır:

php'! ! ! exx'

Pratik Görevler

Задание 1

Bir dize verildi:

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

Aşağıdaki kalıba uyan dizeleri bulacak bir regex yazın: kenarlarda 'a' harfleri bulunur, aralarında ise - herhangi bir sayıda 'e' harfi veya herhangi bir sayıda 'x' harfi.

Задание 2

Bir dize verildi:

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

Aşağıdaki kalıba uyan dizeleri bulacak bir regex yazın: kenarlarda 'a' harfleri bulunur, aralarında ise - iki kez 'e' harfi veya herhangi bir sayıda 'x' harfi.