Teckengrupper i reguljära uttryck i PHP

Det finns speciella kommandon som gör det möjligt välja hela grupper av tecken på en gång. Kommandot \d betyder siffra från 0 till 9. Kommandot \w betecknar siffra, latinsk bokstav eller understreck. Kommandot \s betecknar mellanslag eller blanktecken: mellanslag, radbrytning, tabbstopp. Det går att invertera kommandots värde genom att skriva stor bokstav: till exempel, om \d är en siffra, så är \D inte en siffra.

Exempel

Låt oss hitta alla siffror:

php<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'! !! !!!'

Exempel

Upprepningsoperatorer betraktar kommandon-grupper som en helhet, det vill säga grupperande parenteser behövs inte. I följande exempel ser sökmönstret ut så här: siffra från 0 till 9 en eller flera gånger:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'! ! ! abc @@@'

Exempel

I följande exempel ser sökmönstret ut så här: vad som helst en eller flera gånger, men inte siffra från 0 till 9:

php<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'123!3!'

Exempel

I detta exempel ser sökmönstret ut så här: blanktecken en gång:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'1!12!123!abc!@@@'

Exempel

I detta exempel ser sökmönstret ut så här: ICKE blanktecken en eller flera gånger. Alla delsträngar, separerade med mellanslag, kommer att ersättas med '!':

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'! ! ! ! !'

Exempel

I detta exempel ser sökmönstret ut så här: siffra eller bokstav en eller flera gånger. Alla delsträngar som består av siffror och bokstäver kommer att ersättas med '!':

php<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas in i variabeln:

php'! ! ! ! @@@'

Exempel

I detta exempel ser sökmönstret ut så här: ICKE siffra och ICKE bokstav en eller flera gånger. Enligt denna definition passar i vårt fall '@@@' och alla mellanslag (de är ju också varken siffror eller bokstäver). Var uppmärksam på att det i slutet finns en '!' - i den förvandlades strängen ' @@@' - med mellanslag framför:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

Som ett resultat kommer följande att skrivas in i variabeln:

php'1!12!123!Abc!'

Praktiska uppgifter

Задание 1

Given en sträng:

php<?php
  $str = 'a1a a2a a3a a4a a5a aba aca';
?>

Skriv ett reguljärt uttryck som hittar strängar, där vid kanterna står bokstäverna 'a', och mellan dem en siffra.

Задание 2

Given en sträng:

php<?php
  $str = 'a1a a22a a333a a4444a a55555a aba aca';
?>

Skriv ett reguljärt uttryck som hittar strängar, där vid kanterna står bokstäverna 'a', och mellan dem valfritt antal siffror.

Задание 3

Given en sträng:

php<?php
  $str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>

Skriv ett reguljärt uttryck som hittar strängar, där vid kanterna står bokstäverna 'a', och mellan dem valfritt antal siffror (inklusive noll siffror, det vill säga strängen 'aa').

Задание 4

Given en sträng:

php<?php
  $str = 'avb a1b a2b a3b a4b a5b abb acb';
?>

Skriv ett reguljärt uttryck som hittar strängar av följande typ: vid kanterna står bokstäverna 'a' och 'b', och mellan dem - inte en siffra.

Задание 5

Given en sträng:

php<?php
  $str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>

Skriv ett reguljärt uttryck som hittar strängar av följande typ: vid kanterna står bokstäverna 'a' och 'b', och mellan dem - inte en bokstav och inte en siffra.

Задание 6

Given en sträng:

php<?php
  $str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>

Skriv ett reguljärt uttryck som ersätter alla mellanslag med '!'.