⊗ppPmRgEP 254 of 447 menu

PHPda muntazam ifodadagi qisqlar

Qisqlarning tarkibi nafaqat almashtirish satrida, balki muntazam ifodaning o'zida ham mavjud: biz biron bir narsani qisqqa joylashtirishimiz mumkin, so'ngra to'g'ridan-to'g'ri muntazam ifodada aytishimiz mumkinki, bu yerda shu qisqning tarkibi bo'lishi kerak.

Qisqlarning tarkibi ularning raqamlari bo'yicha mavjud, oldida teskari chiziq bilan. Masalan, nolchi qisq shunday mavjud bo'ladi: \0, birinchi qisq shunday - \1, ikkinchi - \2 va hokazo.

Men ishonamanki, yuqorida yozilganlarning hammasi siz uchun hali juda noaniq. Bu ajablanarli emas, chunki qisqlar - muntazam ifodalarning eng tushunarsiz joyi. Keling, misollar orqali tushunamiz.

Misol

Faraz qilaylik, bizda shunday satr bor:

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

Keling, unda ketma-ket kelayotgan ikkita bir xil harf joylashgan barcha joylarni topaylik. Masalani yechish uchun har qanday harfni qidirib, uni qisqqa joylashtiramiz, so'ngra keyingi belgi shu qisqning tarkibi ekanligini teksiramiz:

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

Natijada o'zgaruvchiga quyidagi yoziladi:

'! ! cd ef'

Misol

Faraz qilaylik, bizda shunday satr bor:

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

Keling, unda birinchi va oxirgi harflari bir xil bo'lgan barcha so'zlarni topaylik. Masalani yechish uchun quyidagi andozani yozamiz: harf, keyin yana bir yoki undan ortiq harflar, va keyin birinchi harf bilan bir xil harf:

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

Natijada o'zgaruvchiga quyidagi yoziladi:

'! ! csgd'

Misol

\1 o'rniga \g1 yozish mumkin:

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

Misol

Shuningdek, \g{1} yozish mumkin:

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

Misol

Jingaloq qavslar ichida manfiy sonlarni ko'rsatish mumkin. Bu holda qisqlar oxirdan hisoblana boshlanadi:

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

Amaliy vazifalar

Berilgan satr:

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

Ketma-ket uchta bir xil harf bo'lgan barcha pastki satrlarni toping.

Berilgan satr:

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

Ketma-ket ikkita yoki undan ortiq bir xil harf bo'lgan barcha pastki satrlarni toping.

Berilgan satr:

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

Ketma-ket ikkita bir xil so'z bo'lgan barcha pastki satrlarni toping.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish