⊗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हिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау