⊗pyPmREGL 38 of 129 menu

A kapzsiság korlátozása reguláris kifejezésekben Pythonban

A reguláris kifejezések alapértelmezetten kapzsiak. Ez azt jelenti, hogy a lehető legtöbb karaktert próbálják megragadni. Nézzünk egy példát. Tegyük fel, hogy van egy ilyen karakterláncunk:

txt = 'aeeex zzz x kkk'

Ebben a karakterláncban meg szeretnénk találni a 'aeeex' részt a következő minta alapján: az 'a' betű, majd bármely karakter egy vagy többször, majd az 'x' betű:

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

Bár a '! zzz x kkk' karakterláncot várnánk, a '! kkk' karakterlánc jelenik meg. Ennek az az oka, hogy a reguláris kifejezésünk az 'a' betűtől az 'x' betűig keresi az összes karaktert. De a karakterláncunkban két 'x' betű van! A kapzsiság miatt az történik, hogy a reguláris kifejezés az utolsó 'x'-ig keres, ezáltal olyat ragad meg, amire nem volt szükségünk.

Természetesen gyakran pont ez a viselkedés a szükséges. De ebben a konkrét esetben le kell állítani a kapzsiságot, és meg kell mondani a reguláris kifejezésnek, hogy az első 'x'-ig keressen. Ebben az esetben az ismétlési operátor után kérdőjelet kell tenni:

res = re.sub('a.+?x', '!', txt) print(res) # kiírja a '! zzz x kkk' karakterláncot

A kapzsiság minden ismétlési operátornál korlátozható: mind a *, mind a ?, mind a {} - így: *?, ?? és {}?.

Adott a következő karakterlánc:

txt = 'aba accca azzza wwwwa'

Írj reguláris kifejezést, amely megtalálja az összes karakterláncot, amelynek szélein 'a' betűk állnak, és mindegyiket lecseréli '!'-ra. Az 'a' betűk között bármilyen karakter állhat (kivéve 'a').

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás