Het caret-teken binnen sets in PHP regex
Zoals je weet, geeft het caret-teken binnen [] een
negatie, wanneer het aan het begin van de haakjes wordt geschreven.
Het is dus een speciaal teken binnen
deze haakjes. Om het caret-teken als een gewoon teken te krijgen,
moet je het of escapen, of niet op de eerste plaats zetten.
Voorbeeld
In het volgende voorbeeld is het zoekpatroon als volgt:
het eerste teken is alles behalve 'd',
dan twee letters 'x'.
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! dxx'
Voorbeeld
En nu is het zoekpatroon als volgt: het eerste teken
is 'd' of '^', dan twee
letters 'x':
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'axx bxx ! !'
Voorbeeld
Je kunt het caret-teken niet van de eerste plaats verwijderen, maar het gewoon escapen met een backslash, en dan zal het zichzelf vertegenwoordigen:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'axx bxx ! !'
Praktische opdrachten
Gegeven een string:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Schrijf een reguliere expressie die strings vindt volgens het patroon: caret-teken of apenstaartje, en dan twee Latijnse letters.
Gegeven een string:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Schrijf een reguliere expressie die strings vindt volgens het patroon: GEEN caret-teken en geen apenstaartje, en dan twee Latijnse letters.
Gegeven een string:
<?php
$str = '^xx axx ^zz bkk';
?>
Schrijf een reguliere expressie die strings vindt volgens het patroon: GEEN caret-teken, en dan twee Latijnse letters.