⊗ppPmRgEP 254 of 447 menu

Kantong dalam Ekspresi Reguler di PHP

Isi kantong tidak hanya dapat diakses di string pengganti, tetapi juga di dalam ekspresi reguler itu sendiri: kita dapat memasukkan sesuatu ke dalam kantong, lalu langsung dalam ekspresi reguler mengatakan bahwa di sini harus berisi isi dari kantong tersebut.

Isi kantong dapat diakses berdasarkan nomornya, dengan diawali garis miring terbalik. Misalnya, kantong nol dapat diakses seperti ini: \0, kantong pertama seperti ini - \1, kantong kedua - \2, dan seterusnya.

Saya yakin semua yang ditulis di atas masih sangat kabur bagi Anda. Ini tidak mengherankan, karena kantong adalah bagian yang paling sulit dipahami dalam ekspresi reguler. Mari kita pahami dengan contoh.

Contoh

Misalkan kita memiliki string seperti ini:

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

Mari kita temukan semua tempat di dalamnya yang terdapat dua huruf yang sama berurutan. Untuk menyelesaikan tugas, kita akan mencari huruf apa saja, memasukkannya ke dalam kantong, lalu memeriksa apakah karakter berikutnya adalah isi dari kantong tersebut:

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

Hasilnya, yang akan tersimpan di variabel adalah sebagai berikut:

'! ! cd ef'

Contoh

Misalkan kita memiliki string seperti ini:

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

Mari kita temukan semua kata di dalamnya yang huruf pertama dan terakhirnya sama. Untuk menyelesaikan tugas, kita akan menulis pola berikut: huruf, diikuti oleh satu atau lebih huruf, lalu diakhiri dengan huruf yang sama seperti huruf pertama:

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

Hasilnya, yang akan tersimpan di variabel adalah sebagai berikut:

'! ! csgd'

Contoh

Alih-alih \1, Anda dapat menulis \g1:

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

Contoh

Anda juga dapat menulis \g{1}:

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

Contoh

Dalam kurung kurawal, Anda dapat menentukan angka negatif. Dalam hal ini, kantong akan dihitung dari akhir:

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

Tugas Praktis

Diberikan string:

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

Temukan semua substring yang memiliki tiga huruf yang sama berurutan.

Diberikan string:

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

Temukan semua substring yang memiliki dua atau lebih huruf yang sama berurutan.

Diberikan string:

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

Temukan semua substring yang memiliki dua kata yang sama berurutan.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak