⊗pyPmRELAB 72 of 129 menu

Lookahead dan Lookbehind Positif serta Negatif dalam Regex Python

Kadang-kadang kita perlu menyelesaikan masalah seperti ini: temukan string 'aaa' dan ganti dengan '!', tetapi hanya jika setelah 'aaa' ada 'x', sedangkan 'x' itu sendiri tidak diganti. Jika kita mencoba menyelesaikan masalah ini 'secara langsung', maka kita tidak akan berhasil:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # akan menampilkan '! baaa', sedangkan yang diinginkan adalah '!x baaa'

Lookahead

Untuk menyelesaikan masalah ini, diperlukan cara untuk mengatakan bahwa 'x' tidak boleh diganti. Hal ini dilakukan dengan menggunakan kurung khusus (?= ), yang hanya melihat, tetapi tidak mengambilnya.

Kurung ini disebut positive lookahead. Positif - karena 'x' (dalam kasus kita) harus ada - hanya saat itulah penggantian akan terjadi.

Mari kita terapkan kurung ini untuk menyelesaikan tugas kita:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # akan menampilkan '!x aaab

Ada juga negative lookahead - (?! ) - yang justru mengatakan bahwa sesuatu tidak boleh ada. Dalam contoh berikut, penggantian akan terjadi hanya jika setelah 'aaa' BUKAN 'x':

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # akan menampilkan 'aaax !b'

Lookbehind

Dengan cara yang sama, ada positive lookbehind - (?<= ). Dalam contoh berikut, penggantian akan terjadi hanya jika sebelum 'aaa' ada 'x':

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # akan menampilkan 'x!'

Dan ada juga negative lookbehind - (?<! ). Dalam contoh berikut penggantian akan terjadi hanya jika sebelum 'aaa' tidak ada 'x':

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # akan menampilkan 'b!'

Tugas Praktis

Diberikan sebuah string yang berisi nama-nama fungsi:

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

Dapatkan array nama fungsi dari string tersebut.

Diberikan sebuah string dengan tag:

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

Dapatkan array nama atribut dari tag tersebut.

Diberikan sebuah string dengan variabel-variabel:

txt = '$aaa $bbb $ccc xxxx'

Dapatkan substring yang didahului oleh tanda dolar.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak