Crtica unutar skupova u regex izrazima PHP

Crtica - takođe specijalni karakter unutar [] (a izvana - nije). Ako vam treba sama crtica kao simbol - onda je stavite tamo, gde neće biti shvaćena kao razdelnik grupe.

Zašto je ovo važno: možete napraviti grupu simbola, sami to ne primećujući. Na primer, ovako - [:-@] - mislite da odabirate dvotačku, crticu i znak @, a u stvari se dobija grupa simbola između : i @. U ovu grupu spadaju sledeći simboli: :, ;, ?, <, =, >.

Odakle su se pojavili? Iz tabele ASCII - dvotačka ima manji broj, nego znak @ - i dobija se grupa. Odnosno sve grupe dobijaju se prema ASCII tabeli (po želji ovime se može koristiti).

Kako se boriti sa ovim: stavite simbol crtice tamo, gde sigurno neće biti shvaćen kao simbol grupe, na primer, na početku ili na kraju (odnosno posle [ ili pre ]).

Možete takođe da ekranizujete crticu - tada će označavati samu sebe nezavisno od pozicije. Na primer, umesto [:-@] napisati [:\-@] - i grupe više neće biti, a biće tri simbola - dvotačka, crtica i znak @.

Primer

U sledećem primeru šablon pretrage je sledeći: cifra 1, zatim slovo od 'a' do 'z', zatim cifra 2:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[a-z]2#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! 1-2 ! !'

Primer

Hajde sada da ekranizujemo crticu. Kao rezultat šablon pretrage je sledeći: cifra 1, zatim slovo 'a', ili crtica, ili slovo 'z', zatim cifra 2:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[a\-z]2#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! ! 1c2 !'

Primer

Možete jednostavno premeštati crticu, ne ekranizujući je:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[az-]2#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! ! 1c2 !'

Primer

U sledećem primeru šablon pretrage je sledeći: prvi simbol - to su mala slova ili crtica '-', pa dva slova 'x':

php<?php
  $str = 'axx Axx -xx @xx';
  $res = preg_replace('#[a-z-]xx#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! Axx ! @xx'

Primer

U sledećem primeru šablon pretrage je sledeći: prvi simbol - to su mala, velika slova ili crtica '-', pa dva slova 'x':

php<?php
  $str = 'axx Axx -xx @xx';
  $res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! ! ! @xx'

Primer

Možete rasporediti crticu između dve grupe - tamo ona sigurno neće napraviti još jednu grupu:

php<?php
  $str = 'axx 9xx -xx @xx';
  $res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>

Kao rezultat u promenljivu će se upisati sledeće:

php'! ! ! @xx'

Praktični zadaci

Задание 1

Data je sledeći string:

php<?php
  $str = 'xaz xBz xcz x-z x@z';
?>

Pronađite sve stringove prema sledećem šablonu: slovo 'x', veliko ili malo slovo ili crtica, slovo 'z'.

Задание 2

Data je sledeći string:

php<?php
  $str = 'xaz x$z x-z xcz x+z x%z x*z';
?>

Pronađite sve stringove prema sledećem šablonu: slovo 'x', zatim ili dolar, ili crtica ili plus, pa slovo 'z'.