Inverze znakových sad v regulárních výrazech
Pomocí stříšky ^ na začátku hranatých
závorek lze invertovat požadovaný výraz. To znamená,
že pokud například příkaz [ab] hledá
písmeno 'a' nebo 'b', pak příkaz
[^ab] bude hledat všechny znaky kromě
'a' a 'b'.
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'x', poté NE písmeno 'a',
ne 'b' a ne 'c', pak písmeno
'z':
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
Výsledkem bude do proměnné zapsáno následující:
'xaz xbz xcz !'
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'x', poté NE malé latinské písmeno,
pak písmeno 'z':
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
Výsledkem bude do proměnné zapsáno následující:
'xaz xbz ! !'
Praktické úlohy
Napište regulární výraz, který najde řetězce
podle vzoru: číslice '1', poté znak
ne 'e' a ne 'x', číslice '2'.
Napište regulární výraz, který najde řetězce
podle vzoru: písmeno 'x', poté NE
číslice od 2 do 7, písmeno 'z'.
Napište regulární výraz, který najde řetězce
podle vzoru: písmeno 'x', poté NE
velké latinské písmeno od 1 a více
krát, písmeno 'z'.
Napište regulární výraz, který najde řetězce
podle vzoru: písmeno 'x', poté ne
velké a ne malé latinské písmeno a ne číslice
od 1 do 5 od 1 a více
krát, písmeno 'z'.