Cirkumflex-tecknet inuti mängder i PHP reguljära uttryck
Som du vet, skapar cirkumflex-tecknet inuti []
en negation när det skrivs i början av hakparenteserna.
Det betyder att det är ett specialtecken inuti
dessa hakparenteser. För att få cirkumflex som ett tecken
måste man antingen escape:a det eller flytta det från
den första positionen.
Exempel
I följande exempel är sökmönstret så här:
det första tecknet är allt utom 'd',
sedan två bokstäver 'x'.
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! dxx'
Exempel
Och nu är sökmönstret så här: det första tecknet
är 'd' eller '^', sedan två
bokstäver 'x':
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'axx bxx ! !'
Exempel
Du behöver inte flytta cirkumflex-tecknet från den första positionen, utan kan bara escape:a det med ett omvänt snedstreck, och då kommer det att representera sig självt:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'axx bxx ! !'
Praktiska uppgifter
Givet en sträng:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: cirkumflex eller 'at'-symbol, och sedan två latinska bokstäver.
Givet en sträng:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: INTE cirkumflex och inte 'at'-symbol, och sedan två latinska bokstäver.
Givet en sträng:
<?php
$str = '^xx axx ^zz bkk';
?>
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: INTE cirkumflex, och sedan två latinska bokstäver.