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<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[^d]xx#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! ! dxx'

Exempel

Och nu är sökmönstret så här: det första tecknet är 'd' eller '^', sedan två bokstäver 'x':

php<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[d^]xx#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'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<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[\^d]xx#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'axx bxx ! !'

Praktiska uppgifter

Задание 1

Givet en sträng:

php<?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.

Задание 2

Givet en sträng:

php<?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.

Задание 3

Givet en sträng:

php<?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.