Դեշըն բազմությունների ներսում PHP-ի ռեգուլյար արտահայտություններում
Դեշը նույնպես հատուկ նիշ է []-ի ներսում
(իսկ դրսում՝ ոչ): Եթե ձեզ անհրաժեշտ է դեշը որպես նիշ,
ապա տեղադրեք այն այնտեղ, որտեղ այն չի ընկալվի որպես
խմբի բաժանարար:
Ինչու է սա կարևոր. դուք կարող եք ստեղծել նիշերի խումբ
առանց դա նկատելու: Օրինակ, ահա այսպես՝ [:-@] - դուք
կարծում եք, որ ընտրում եք երկ점, դեշ և @ նիշը, բայց
իրականում ստացվում է :-ի և @-ի միջև եղած
նիշերի խումբ: Այս խմբի մեջ մտնում են հետևյալ նիշերը.
:, ;, ?,
<, =, >:
Որտեղի՞ց են դրանք առաջացել: ASCII աղյուսակից - երկ점ն ունի ավելի փոքր համար, քան @ նիշը - և ստացվում է խումբ: Այսինքն, բոլոր խմբերը ստացվում են ըստ ASCII աղյուսակի (ցանկության դեպքում կարող եք օգտագործել սա):
Ինչպես հաղթահարել սա. տեղադրեք դեշ նիշը այնտեղ,
որտեղ այն հաստատ չի ընկալվի որպես խմբի նիշ, օրինակ,
սկզբում կամ վերջում (այսինքն՝ [-ից հետո կամ
]-ից առաջ):
Կարող եք նաև էկրանավորել դեշը - այդ դեպքում այն
կնշանակի ինքն իրեն՝ անկախ դիրքից: Օրինակ, [:-@]-ի
փոխարեն գրել
[:\-@] - և խումբ արդեն չի լինի, այլ
կլինեն երեք նիշ - երկ점, դեշ և @ նիշ:
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
թիվ 1, ապա 'a'-ից
մինչև 'z' տառ, ապա 2 թիվ:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! 1-2 ! !'
Օրինակ
Այժմ եկեք էկրանավորենք դեշը: Արդյունքում
որոնման ձևանմուշը հետևյալն է. թիվ 1, ապա
'a' տառ, կամ դեշ, կամ 'z' տառ,
ապա 2 թիվ:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ! 1c2 !'
Օրինակ
Կարող եք պարզապես տեղափոխել դեշը՝ առանց այն էկրանավորելու.
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ! 1c2 !'
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
առաջին նիշը փոքրատառ տառեր կամ
դեշ '-' է, ապա երկու 'x' տառ:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! Axx ! @xx'
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
առաջին նիշը փոքր կամ մեծ
տառ է կամ դեշ '-', ապա երկու
'x' տառ:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ! ! @xx'
Օրինակ
Կարող եք տեղադրել դեշը երկու խմբերի միջև - այնտեղ այն հաստատ չի ստեղծի ևս մեկ խումբ.
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ! ! @xx'
Գործնական առաջադրանքներ
Տրված է տողը.
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Գտեք բոլոր տողերը ըստ հետևյալ ձևանմուշի.
'x' տառ, մեծատառ կամ փոքրատառ
տառ կամ դեշ, 'z' տառ:
Տրված է տողը.
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Գտեք բոլոր տողերը ըստ հետևյալ ձևանմուշի.
'x' տառ, ապա կամ դոլար, կամ
դեշ կամ գումարած, ապա 'z' տառ: