Grupet e karaktereve në shprehjet e rregullta PHP

Ekzistojnë komanda të veçanta që lejojnë përzgjedhjen e grupeve të tëra të karaktereve menjëherë. Komanda \d nënkupton një shifër nga 0 në 9. Komanda \w shënon një shifër, shkronjë latinose ose shenjën e nënvizimit. Komanda \s shënon një hapësirë ose karakter hapësiror: hapësirë, ndërrim rreshti, tabulim. Është e mundur të invertosh vlerën e komandës, duke shkruar shkronjë të madhe: për shembull, nëse \d - shifër, atëherë \D - jo shifër.

Shembull

Le të gjejmë të gjitha shifrat:

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'! !! !!!'

Shembull

Operatorët e përsëritjes i konsiderojnë komandat-grupe si një të tërë, domethënë kllapat grupuese nuk janë të nevojshme. Në shembullin vijues shablloni i kërkimit duket kështu: shifër nga 0 në 9 një herë ose më shumë:

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'! ! ! abc @@@'

Shembull

Në shembullin vijues shablloni i kërkimit duket kështu: çfarëdo gjëje një herë ose më shumë, por jo shifër nga 0 në 9:

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'123!3!'

Shembull

Në këtë shembull shablloni i kërkimit duket kështu: karakter hapësiror një herë:

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

Si rezultat në variabël do të shkruhet si më poshtë:

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

Shembull

Në këtë shembull shablloni i kërkimit duket kështu: JO karakter hapësiror një herë ose më shumë. Të gjitha nënvargjet, të ndara me hapësira, do të zëvendësohen me '!':

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'! ! ! ! !'

Shembull

Në këtë shembull shablloni i kërkimit duket kështu: shifër ose shkronjë një herë ose më shumë. Të gjitha nënvargjet, të përbëra nga shifra dhe shkronja, do të zëvendësohen me '!':

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'! ! ! ! @@@'

Shembull

Në këtë shembull shablloni i kërkimit duket kështu: JO shifër dhe JO shkronjë një herë ose më shumë. Në përkufizimin e dhënë në rastin tonë bie '@@@' dhe të gjitha hapësirat (ato gjithashtu nuk janë shifra dhe as shkronja). Kushtojini vëmendje asaj që në fund është një '!' - në të u shndërrua vargu ' @@@' - me hapësirë përpara:

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

Si rezultat në variabël do të shkruhet si më poshtë:

php'1!12!123!Abc!'

Detyra praktike

Задание 1

Është dhënë vargu:

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

Shkruani një regex, e cila do të gjejë vargjet, në të cilat në anët qëndrojnë shkronjat 'a', dhe midis tyre një shifër.

Задание 2

Është dhënë vargu:

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

Shkruani një regex, e cila do të gjejë vargjet, në të cilat në anët qëndrojnë shkronjat 'a', dhe midis tyre çfarëdo numri shifrash.

Задание 3

Është dhënë vargu:

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

Shkruani një regex, e cila do të gjejë vargjet, në të cilat në anët qëndrojnë shkronjat 'a', dhe midis tyre çfarëdo numri shifrash (duke përfshirë edhe zero shifra, domethënë vargu 'aa').

Задание 4

Është dhënë vargu:

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

Shkruani një regex, e cila do të gjejë vargjet të llojit vijues: në anët qëndrojnë shkronjat 'a' dhe 'b', dhe midis tyre - jo numër.

Задание 5

Është dhënë vargu:

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

Shkruani një regex, e cila do të gjejë vargjet të llojit vijues: në anët qëndrojnë shkronjat 'a' dhe 'b', dhe midis tyre - jo shkronjë dhe jo shifër.

Задание 6

Është dhënë vargu:

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

Shkruani një regex, e cila do të zëvendësojë të gjitha hapësirat me '!'.