⊗ppPmRgEP 254 of 447 menu

PHP да регуляр ифодада карманлар

Карманларнинг таркиби факат алмаштириш сатридагина эмас, балки регуляр ифоданинг ўзида ҳам мавжуд: биз бирор нарсани карманга қўйишимиз мумкин, сўнг регуляр ифоданинг ўзида, айнан шу ерда ўша карманнинг таркиби бўлиши керак, деб айтишимиз мумкин.

Карманларнинг таркиби уларнинг рақамлари орқали mavjud, уларнинг олдида тескари чизиқ туради. Мисол учун, нол карман шундай мавжуд: \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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш