⊗ppPmRgGL 229 of 447 menu

Կանոնավոր արտահայտությունների ագահությունը սահմանափակելը PHP-ում

Կանոնավոր արտահայտությունները լռելյայնորեն ագահ են: Սա նշանակում է, որ դրանք գրավում են առավելագույն հնարավոր թվով նիշեր:

Եկեք նայենք մի օրինակի: Ենթադրենք, մենք ունենք հետևյալ տողը:

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

Ենթադրենք, այս տողում մենք ցանկանում ենք գտնել 'aeeex' ենթատողը հետևյալ կաղապարով. տառ 'a', ապա ցանկացած նիշ մեկ կամ ավելի անգամ, ապա 'x' տառը:

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

Մենք ակնկալում ենք, որ արդյունքում փոփոխականի մեջ կգրվի '! zzz x kkk' տողը: Սակայն, դա այդպես չէ. փոփոխականի մեջ հայտնվում է '! kkk' տողը:

Ամբողջ բանն այն է, որ մեր կանոնավոր արտահայտությունը փնտրում է բոլոր նիշերը 'a' տառից մինչև 'x' տառը: Բայց մեր տողում կան երկու 'x' տառ: Ագահության պատճառով ստացվում է, որ կանոնավոր արտահայտությունը փնտրում է մինչև վերջին x-ը, thereby capturing այն, ինչ մենք չէինք ակնկալում:

Իհարկե, հաճախ հենց այդպիսի վարքագիծ է մեզ անհրաժեշտ: Բայց կոնկրետ այս դեպքում մենք կցանկանայինք չեղարկել ագահությունը և ասել կանոնավոր արտահայտությանը, որ այն փնտրի մինչև առաջին x-ը:

Ագահությունը սահմանափակելու համար անհրաժեշտ է կրկնության օպերատորից հետո դնել հարցականի նշան.

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

Ագահությունը կարելի է սահմանափակել բոլոր կրկնության օպերատորներին, ահա այսպես. *?, ?? և {}?:

Տրված է տողը.

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

Գրեք կանոնավոր արտահայտություն, որը կգտնի բոլոր տողերը, որոնց եզրերում կան 'a' տառերը, և կփոխարինի դրանցից յուրաքանչյուրը '!'-ով: a տառերի միջև կարող է լինել ցանկացած նիշ (բացի 'a'-ից):

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել