⊗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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել