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
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Sonuç olarak değişkene aşağıdaki yazılacaktır:
'! ! abb'
Örnek
Bu örnekte arama kalıbı şu şekildedir: üç
'a' harfi veya 1 ve daha fazla
'b' harfi:
<?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:
'! ! ! ! axx'
Örnek
Bu örnekte arama kalıbı şu şekildedir: bir veya daha fazla harf veya üç rakam:
<?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:
'! ! ! 1 12 !'
Örnek
Dikey çubuk regex'i iki parçaya değil, istediğiniz kadar parçaya bölebilir:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Sonuç olarak değişkene aşağıdaki yazılacaktır:
'! ! ! 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
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Sonuç olarak değişkene aşağıdaki yazılacaktır:
'! ! ! exx'
Pratik Görevler
Bir dize verildi:
<?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.
Bir dize verildi:
<?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.