⊗ppPmRgEP 254 of 447 menu

PHP-də RegExp-də Qruplar (Kod Blokları)

Qrupların məzmunu yalnız əvəzetmə sətirində deyil, həm də regExp-in özündə əlçatandır: biz nə isə bir qrupa yerləşdirə bilərik, sonra isə birbaşa regExp-də deyə bilərik ki, burada həmin qrupun məzmunu olmalıdır.

Qrupların məzmunu onların nömrələri ilə əlçatandır, onların qarşısında tərs çəpik işarəsi durur. Məsələn, sıfırıncı qrup belə əlçatan olacaq: \0, birinci qrup belə - \1, ikinci - \2 və s.

Əminəm ki, yuxarıda yazılanlar sizə hələlik olduqca qaranlıq görünür. Təəccüblü deyil, çünki qruplar - regExp-in ən az anlaşılan yeridir. Gəlin nümunələr üzərində anlayaq.

Nümunə

Tutaq ki, bizim belə bir sətirimiz var:

<?php $str = 'aa bb cd ef'; ?>

Gəlin onda bir-birinin ardınca gələn iki eyni hərfi tapaq. Məsələni həll etmək üçün istənilən hərfi axtaracağıq, onu qrupa yerləşdirəcəyik, sonra isə növbəti simvolun həmin qrupun məzmunu olub-olmadığını yoxlayacağıq:

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

'! ! cd ef'

Nümunə

Tutaq ki, bizim belə bir sətirimiz var:

<?php $str = 'asxca buzxb csgd'; ?>

Gəlin onda birinci və sonuncu hərfləri eyni olan bütün sözləri tapaq. Məsələni həll etmək üçün aşağıdakı şablonu yazacağıq: hərf, sonra bir və ya daha çox hərf, və sonra birinci hərflə eyni olan hərf:

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

'! ! csgd'

Nümunə

\1 əvəzinə \g1 yazmaq olar:

<?php $res = preg_replace('#([a-z])[a-z]+\g1#', '!', $str); ?>

Nümunə

Həmçinin \g{1} da yazmaq olar:

<?php $res = preg_replace('#([a-z])[a-z]+\g{1}#', '!', $str); ?>

Nümunə

Qıvrım mötərizələrdə mənfi ədədlər də göstərilə bilər. Bu halda qruplar sondan sayılacaq:

<?php $res = preg_replace('#([a-z])([a-z])\g{-2}#', '!', $str); ?>

Praktiki Tapşırıqlar

Sətir verilib:

<?php $str = 'aaa bbb ccc xyz'; ?>

Ard-arda üç eyni hərf olan bütün alt sətirləri tapın.

Sətir verilib:

<?php $str = 'a aa aaa abab bbbb'; ?>

Ard-arda iki və ya daha çox eyni hərf olan bütün alt sətirləri tapın.

Sətir verilib:

<?php $str = 'aaa aaa bbb bbb ccc ddd'; ?>

Ard-arda iki eyni söz olan bütün alt sətirləri tapın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et