⊗pyPmREGL 38 of 129 menu

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

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

txt = 'aeeex zzz x kkk'

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

res = re.sub('a.+x', '!', txt) print(res)

Չնայած մեզ անհրաժեշտ է ստանալ '! zzz x kkk' տողը, կցուցադրվի '! kkk' տողը: Ամբողջ բանը նրանում է, որ մեր կանոնավոր արտահայտությունը փնտրում է բոլոր նիշերը 'a' տառից մինչև 'x' տառը: Բայց մեր տողում կա երկու 'x' տառ: Ագահության պատճառով ստացվում է, որ կանոնավոր արտահայտությունը փնտրում է մինչև ամենավերջին x-ը, այդպիսով գրավելով ոչ այն, ինչ մեզ էին պետք:

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

res = re.sub('a.+?x', '!', txt) print(res) # կցուցադրի '! zzz x kkk' տողը

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

Տրված է տողը.

txt = '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-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել