⊗ppPmRgEP 254 of 447 menu

Кишэні ў рэгулярным выразе ў PHP

Змесціва кішэняў даступна не толькі ў радку замены, але і ў самой рэгулярцы: мы можам пакласці што-небудзь у кішэнь, а затым проста ў рэгулярцы сказаць, што тут павінна стаяць змесціва гэтага кішэня.

Змесціва кішэняў даступна па іх нумарах, перад якімі стаіць зваротны слэш. Напрыклад, нулявы кішэнь будзе даступны вось так: \0, першы кішэнь вось так - \1, другі - \2 і гэтак далей.

Упэўнены, што ўсё напісанае вышэй пакуль вельмі туманна для вас. Гэта не дзіўна, так якія кішэні - самае незразумелае месца рэгулярак. Давайце будзем разбірацца на прыкладах.

Прыклад

Хай у нас ёсць вось такая радок:

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

Давайце знойдзем у ёй усе месцы, у якіх стаяць дзве любыя аднолькавыя літары запар. Для вырашэння задачы будзем шукаць любую літару, кладзім яе ў кішэнь, а затым правяраць, ці ідзе наступным сімвалам змесціва гэтага кішэня:

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

У выніку ў зменную запішацца наступнае:

'! ! cd ef'

Прыклад

Хай у нас ёсць вось такая радок:

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

Давайце знойдзем у ёй усе словы, у якіх аднолькавыя першая і апошняя літары. Для вырашэння задачы напішам наступны шаблон: літара, затым яшчэ адна ці больш літар, а затым такая жа літара як першая:

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

У выніку ў зменную запішацца наступнае:

'! ! csgd'

Прыклад

Замест \1 можна пісаць \g1:

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

Прыклад

Можна таксама пісаць \g{1}:

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

Прыклад

У фігурных дужках можна паказваць адмоўныя лікі. У гэтым выпадку кішэні будуць адлічвацца з канца:

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

Практычныя задачы

Дадзена радок:

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

Знайдзіце ўсе падрадкі, у якіх ёсць тры аднолькавыя літары запар.

Дадзена радок:

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

Знайдзіце ўсе падрадкі, у якіх ёсць дзве ці больш аднолькавыя літары запар.

Дадзена радок:

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

Знайдзіте ўсе падрадкі, у якіх ёсць два аднолькавыя словы запар.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČ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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць