Vijëza brenda grupeve në regex PHP
Vijëza - gjithashtu është karakter special brenda []
(por jashtë - jo). Nëse keni nevojë për vijëzën vetë si karakter
- atëherë vendoseni aty,
ku ajo nuk do të perceptohet si ndarës
i grupit.
Pse kjo është e rëndësishme: ju mund të bëni një grup
karakteresh, pa e vënë re vetë. Për shembull,
kështu - [:-@] - ju mendoni, se
po zgjidhni dy pika, vijëz dhe simbolin @, por në
të vërtetë rezulton një grup karakteresh midis
: dhe @. Në këtë grup përfshihen
karakteret e mëposhtme: :, ;, ?,
<, =, >.
Nga erdhën ata? Nga tabela ASCII - dy pikat kanë numër më të vogël, se simboli @ - dhe kështu fitohet grupi. Domethënë të gjitha grupet fitohen sipas tabelës ASCII (nëse dëshironi kësaj mund t'i përfitoni).
Si të luftohet kjo: vendosni karakterin e vijëzës
aty, ku ajo me siguri nuk do të perceptohet si
karakter grupi, për shembull, në fillim ose në fund
(dmth pas [ ose para ]).
Mundeni gjithashtu ta ekranizoni vijëzën - atëherë
ajo do të tregojë vetë pavarësisht nga
pozita. Për shembull, në vend të [:-@] shkruani
[:\-@] - dhe grupi tashmë nuk do të jetë, por
do të jenë tre karaktere - dy pika, vijëz dhe simboli @.
Shembull
Në shembullin vijues modeli i kërkimit është:
shifra 1, pastaj shkronja nga 'a'
deri në 'z', pastaj shifra 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! 1-2 ! !'
Shembull
Tani le ta ekranizojmë vijëzën. Si rezultat
modeli i kërkimit është: shifra 1, pastaj
shkronja 'a', ose vijëz, ose shkronja 'z',
pastaj shifra 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! 1c2 !'
Shembull
Mund thjesht ta ndërroni vendin e vijëzës, pa e ekranizuar atë:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! 1c2 !'
Shembull
Në shembullin vijues modeli i kërkimit është:
karakteri i parë - janë shkronja të vogla ose
vijëz '-', pastaj dy shkronja 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! Axx ! @xx'
Shembull
Në shembullin vijues modeli i kërkimit është:
karakteri i parë - janë shkronja të vogla, të mëdha
ose vijëz '-', pastaj dy shkronja
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! ! @xx'
Shembull
Mund të vendosni vijëzën midis dy grupeve - aty ajo me siguri nuk do të krijojë një grup tjetër:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! ! @xx'
Detyra praktike
Është dhënë stringu:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Gjeni të gjitha stringjet sipas modelit vijues:
shkronja 'x', shkronjë e madhe ose e vogël
ose vijëz, shkronja 'z'.
Është dhënë stringu:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Gjeni të gjitha stringjet sipas modelit vijues:
shkronja 'x', pastaj ose dollar, ose
vijëz ose plus, pastaj shkronja 'z'.