Znak daszka wewnątrz zbiorów w wyrażeniach regularnych PHP
Jak wiesz, daszek wewnątrz [] tworzy
negację, gdy jest napisany na początku nawiasów.
Oznacza to, że jest symbolem specjalnym wewnątrz
tych nawiasów. Aby uzyskać daszek jako symbol,
trzeba go albo wyescapować, albo usunąć z
pierwszej pozycji.
Przykład
W następującym przykładzie wzorzec wyszukiwania jest następujący:
pierwszy symbol to wszystko oprócz 'd',
potem dwie litery 'x'.
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! dxx'
Przykład
A teraz wzorzec wyszukiwania jest następujący: pierwszy symbol
- to 'd' lub '^', potem dwie
litery 'x':
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'axx bxx ! !'
Przykład
Można nie usuwać daszka z pierwszej pozycji, a po prostu wyescapować go za pomocą ukośnika odwrotnego, i będzie on oznaczał samego siebie:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'axx bxx ! !'
Zadania praktyczne
Dany jest ciąg:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Napisz wyrażenie regularne, które znajdzie ciągi według wzorca: daszek lub małpa, a następnie dwie litery łacińskie.
Dany jest ciąg:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Napisz wyrażenie regularne, które znajdzie ciągi według wzorca: NIE daszek i nie małpa, a następnie dwie litery łacińskie.
Dany jest ciąg:
<?php
$str = '^xx axx ^zz bkk';
?>
Napisz wyrażenie regularne, które znajdzie ciągi według wzorca: NIE daszek, a następnie dwie litery łacińskie.