Příkaz 'nebo' v regulárních výrazech PHP
V této lekci rozebereme příkaz
|, který představuje výkonnější
verzi NEBO ve srovnání s
příkazem []. Tento příkaz umožňuje
rozdělit regulární výraz na několik částí.
Hledaný výraz pak může odpovídat buď jedné
části regulárního výrazu, nebo druhé. Podívejme se
na příklady.
Příklad
V tomto příkladu je vzor hledání následující: tři
písmena 'a' nebo tři písmena 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Výsledek zapsaný do proměnné bude následující:
'! ! abb'
Příklad
V tomto příkladu je vzor hledání následující: tři
písmena 'a' nebo od 1 a více
písmen 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Výsledek zapsaný do proměnné bude následující:
'! ! ! ! axx'
Příklad
V tomto příkladu je vzor hledání následující: jedno nebo více písmen nebo tři číslice:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Výsledek zapsaný do proměnné bude následující:
'! ! ! 1 12 !'
Příklad
Svislítko může rozdělit regulární výraz ne na dvě části, ale na libovolný počet částí:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Výsledek zapsaný do proměnné bude následující:
'! ! ! ddd'
Příklad
Pokud se svislítko nachází uvnitř kulatých
závorek, pak 'nebo' funguje pouze uvnitř
těchto závorek. Jako příklad nalezněme řetězce
podle následujícího vzoru: na začátku je
buď 'a', nebo 'b' jedno nebo více
krát, a poté dvě písmena 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Výsledek zapsaný do proměnné bude následující:
'! ! ! exx'
Praktické úlohy
Je dán řetězec:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Napište regulární výraz, který najde řetězce
podle vzoru: na okrajích jsou písmena 'a',
a mezi nimi - buď písmeno 'e' libovolný
počet krát nebo písmeno 'x' libovolný
počet krát.
Je dán řetězec:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Napište regulární výraz, který najde řetězce
podle vzoru: na okrajích jsou písmena 'a',
a mezi nimi - buď písmeno 'e' dvakrát
nebo písmeno 'x' libovolný počet krát.