⊗pyPmRELAB 72 of 129 menu

Python регуляр ифодаларида мусбат ва салбий кўриб чиқиш

Бaъзан шундай вазифани ечиш керак бўлади: '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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш