⊗pyPmRELAB 72 of 129 menu

Teigiamasis ir neigiamasis priekinės ir galinės eigos peržiūra Python reguliariosiose išraiškose

Kartais reikia išspręsti tokio tipo uždavinį: rasti eilutę 'aaa' ir pakeisti ją į '!', bet tik jeigu po 'aaa' yra 'x', o patį 'x' tuo pačiu nepakeisti. Jei mes pabandysime išspręsti uždavinį 'tiesiogiai', tai mums nieko neišeis:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # išves '! baaa', o norėjome '!x baaa'

Priekinė eigos peržiūra

Uždaviniui išspręsti reikia būdo pasakyti, kad 'x' neturėtų būti keičiamas. Tai daroma naudojant specialiuosius skliaustus (?= ), kurie tiesiog žiūri, bet nepasigamina sau.

Šie skliaustai vadinami teigiama priekinės eigos peržiūra. Teigiama - kadangi 'x' (mūsų atveju) turi būti - tik tada įvyks pakeitimas.

Panaudokime šiuos skliaustus mūsų uždaviniui išspręsti:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # išves '!x aaab

Yra ir neigiama priekinės eigos peržiūra - (?! ) - ji, atvirkščiai, sako, kažko turi nebūti. Šiame pavyzdyje, pakeitimas įvyks, tik jeigu po 'aaa' yra NE 'x':

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # išves 'aaax !b'

Galinė eigos peržiūra

Analogiai yra teigiama galinės eigos peržiūra - (?<= ). Šiame pavyzdyje pakeitimas įvyks, tik jeigu prieš 'aaa' yra 'x':

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # išves 'x!'

Ir yra taip pat neigiama galinės eigos peržiūra - (?<! ). Šiame pavyzdyje pakeitimas įvyks, tik jeigu prieš 'aaa' nėra 'x':

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # išves 'b!'

Praktiniai uždaviniai

Duota eilutė, kurioje yra funkcijų pavadinimai:

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

Gaukite funkcijų pavadinimų masyvą iš eilutės.

Duota eilutė su tag'u:

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

Gaukite šio tag'o atributų pavadinimų masyvą.

Duota eilutė su kintamaisiais:

txt = '$aaa $bbb $ccc xxxx'

Gaukite poeilutes, prieš kurias yra dolerio ženklas.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti