Karaktercsoportok a PHP reguláris kifejezéseiben

Léteznek speciális parancsok, amelyek lehetővé teszik egész karaktercsoportok kiválasztását. A \d parancs a 0 és 9 közötti számjegyet jelenti. A \w parancs számjegyet, latin betűt vagy aláhúzás jelet jelöl. A \s parancs szóközt vagy szóköz karaktert jelöl: szóköz, sortörés, tabulátor. A parancs értéke megfordítható nagybetűvel: például, ha \d - számjegy, akkor \D - nem számjegy.

Példa

Keressük meg az összes számjegyet:

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

Az eredmény a következő lesz a változóban:

php'! !! !!!'

Példa

Az ismétlési operátorok a parancsok-csoportokat egésznek tekintik, azaz a csoportosító zárójelek nincsenek szükségesek. A következő példában a keresési minta így néz ki: 0 és 9 közötti számjegy egy vagy többször:

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

Az eredmény a következő lesz a változóban:

php'! ! ! abc @@@'

Példa

A következő példában a keresési minta így néz ki: bármi egy vagy többször, de nem 0 és 9 közötti számjegy:

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

Az eredmény a következő lesz a változóban:

php'123!3!'

Példa

Ebben a példában a keresési minta így néz ki: szóköz karakter egyszer:

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

Az eredmény a következő lesz a változóban:

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

Példa

Ebben a példában a keresési minta így néz ki: NEM szóköz karakter egy vagy többször. Minden szóközökkel elválasztott részsztring helyére '!' kerül:

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

Az eredmény a következő lesz a változóban:

php'! ! ! ! !'

Példa

Ebben a példában a keresési minta így néz ki: számjegy vagy betű egy vagy többször. Minden, számjegyekből és betűkből álló részsztring helyére '!' kerül:

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

Az eredmény a következő lesz a változóban:

php'! ! ! ! @@@'

Példa

Ebben a példában a keresési minta így néz ki: NEM számjegy és NEM betű egy vagy többször. E definíció szerint esetünkben ebbe beletartozik '@@@' és minden szóköz (ők ugyanis szintén nem számjegyek és nem betűk). Figyeljünk oda arra, hogy a végén egy '!' található - ebbe alakult át a ' @@@' sztring - az előtte lévő szóközzel:

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

Az eredmény a következő lesz a változóban:

php'1!12!123!Abc!'

Gyakorlati feladatok

Задание 1

Adott a következő sztring:

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

Írj reguláris kifejezést, amely megtalálja azokat a sztringeket, amelyekben a széleken 'a' betűk állnak, közöttük egy számjegy.

Задание 2

Adott a következő sztring:

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

Írj reguláris kifejezést, amely megtalálja azokat a sztringeket, amelyekben a széleken 'a' betűk állnak, közöttük tetszőleges számú számjegy.

Задание 3

Adott a következő sztring:

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

Írj reguláris kifejezést, amely megtalálja azokat a sztringeket, amelyekben a széleken 'a' betűk állnak, közöttük tetszőleges számú számjegy (beleértve a nulla számjegyet is, azaz a 'aa' sztringet).

Задание 4

Adott a következő sztring:

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

Írj reguláris kifejezést, amely megtalálja a következő formájú sztringeket: a széleken 'a' és 'b' betűk állnak, közöttük - nem szám.

Задание 5

Adott a következő sztring:

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

Írj reguláris kifejezést, amely megtalálja a következő formájú sztringeket: a széleken 'a' és 'b' betűk állnak, közöttük - nem betű és nem számjegy.

Задание 6

Adott a következő sztring:

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

Írj reguláris kifejezést, amely minden szóközt lecserél '!'-ra.