Inwertowanie zestawów znaków w regex
Za pomocą daszka ^ na początku kwadratowych
nawiasów można inwertować pożądane. To znaczy,
jeśli na przykład polecenie [ab] szuka
litery 'a' lub 'b', to polecenie
[^ab] będzie szukać wszystkich znaków, z wyjątkiem
'a' i 'b'.
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
litera 'x', następnie NIE litera 'a',
nie 'b' i nie 'c', potem litera
'z':
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xaz xbz xcz !'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
litera 'x', następnie NIE mała litera łacińska,
potem litera 'z':
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xaz xbz ! !'
Zadania praktyczne
Napisz wyrażenie regularne, które znajdzie ciągi
według wzorca: cyfra '1', następnie znak
nie 'e' i nie 'x', cyfra '2'.
Napisz wyrażenie regularne, które znajdzie ciągi
według wzorca: litera 'x', następnie NIE
cyfra od 2 do 7, litera 'z'.
Napisz wyrażenie regularne, które znajdzie ciągi
według wzorca: litera 'x', następnie NIE
duża litera łacińska od 1 i więcej
razy, litera 'z'.
Napisz wyrażenie regularne, które znajdzie ciągi
według wzorca: litera 'x', następnie nie
duża i nie mała litera łacińska i nie cyfra
od 1 do 5 od 1 i więcej
razy, litera 'z'.