⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј