⊗pyPmRELAB 72 of 129 menu

Python регуляркаларындагы позитивдүү жана негативдүү көрүү

Кээде мындай маселени чыгаруу керек болот: 'aaa' сапты таап, '!' менен алмаштыруу, бирок ал эгерде 'aaa'дан кийин 'x' турган гана учурда, ал эми 'x' өзү алмаштырылбайт. Эгер биз маселени 'түздөн-түз' чыгарып көрсөк, анда ийгиликке ээ болбойбуз:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # '! baaa' чыгарат, биз '!x baaa' деп күткөнбүз

Алдыга көрүү

Маселени чыгаруу үчүн, 'x' алмаштырылбашы керек деп айтуу ыкмасы керек. Бул (?= ) атайын кашаалары менен жасалат, алар жөн гана көрүп, өзү менен алып кетпейт.

Бул кашаалар позитивдүү алдыга көрүү деп аталат. Позитивдүү - анткени 'x' (биздин учурда) болушу керек - ал гана учурда алмаштыруу ишке ашат.

Келгиле, бул кашааларды биздин маселени чыгаруу үчүн колдонолу:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # '!x aaab' чыгарат

Негативдүү алдыга көрүү да бар - (?! ) - ал, тескерисинче, бир нерсе болбошу керек деп айтат. Кийинки мисалда, алмаштыруу 'aaa'дан кийин 'x' ЭМЕС турган гана учурда ишке ашат:

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # 'aaax !b' чыгарат

Артка көрүү

Ошол сыяктуу эле позитивдүү артка көрүү бар - (?<= ). Кийинки мисалда алмаштыруу, ал эгерде 'aaa'дан мурун 'x' турган гана учурда ишке ашат:

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # 'x!' чыгарат

Ошондой эле негативдүү артка көрүү да бар - (?. Кийинки мисалда алмаштыруу, ал эгерде 'aaa'дан мурун 'x' турбаса гана учурда ишке ашат:

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # 'b!' чыгарат

Практикалык маселелер

Функциялардын аттарын камтыган сап берилген:

txt = 'func1() func2() func3()'

Саптан функциялардын аттарынын массивин алыңыз.

Тег менен сап берилген:

txt = '<a href="" class="eee" id="zzz">'

Бул тегдин атрибуттарынын аттарынын массивин алыңыз.

Өзгөрмөлөр менен сап берилген:

txt = '$aaa $bbb $ccc xxxx'

Алдында доллар белгиси турган подсаптарды алыңыз.

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу