⊗ppPmRgGL 229 of 447 menu

Kuzuia Uwezo wa Regular Expressions katika PHP

Regular expressions kwa default ni greedy. Hii inamaanisha kuwa hunasa idadi kubwa iwezekanavyo ya herufi.

Wacha tuchambue kwa mfano. Hebu tuseme tuna mfuatano kama huu:

<?php $str = 'aeeex zzz x kkk'; ?>

Hebu tuseme katika mfuatano huu tunataka kupata kipande cha mfuatano 'aeeex' kulingana na muundo ufuatao: herufi 'a', kisha herufi yoyote mara moja au zaidi, kisha herufi 'x'.

<?php $res = preg_replace('#a.+x#', '!', $str); ?>

Tunatarajia kuwa kwenye kibadilishaji matokeo ya kuandikwa ni mfuatano '! zzz x kkk'. Hata hivyo, hii sio kweli - kwenye kibadilishaji huandikwa mfuatano '! kkk'.

Shida yote ni kwamba regular yetu inatafuta herufi zote kutoka herufi 'a' hadi herufi 'x'. Lakini katika mfuatano wetu kuna herufi mbili 'x'. Kwa sababu ya uwezo hutokea kwamba regular inatafuta hadi herufi ya mwisho ya x, na hivyo kushika sio kile tulichotarajia.

Bila shaka, mara nyingi tabia kama hii ndiyo tunayohitaji. Lakini hasa katika kesi hii tungependa kukataa uwezo na kuambia regular itafute mpaka herufi ya kwanza ya x.

Ili kuzuia uwezo, unahitaji kuweka alama ya swali baada ya kiendeshaji cha kurudia:

<?php $res = preg_replace('#a.+?x#', '!', $str); ?>

Uwezo unaweza kuzuiwa kwa waendeshaji wote wa kurudia, kama hivi: *?, ?? na {}?.

Imetolewa mfuatano:

<?php $str = 'aba accca azzza wwwwa'; ?>

Andika regular, ambayo itapata mifuatano yote ambayo kwenye pembe zake kuna herufi 'a', na kila moja itabadilishwa na '!'. Kati ya herufi a kunaweza kuwa na herufi yoyote (isipokuwa 'a').

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa