⊗pyPmREESCh 36 of 129 menu

Escaping Karakter Khusus dalam Regex Python

Anggaplah kita perlu membuat karakter khusus mewakili dirinya sendiri. Untuk itu, karakter tersebut harus di-escape menggunakan backslash. Mari kita lihat contohnya.

Contoh

Dalam contoh berikut, penulis regex ingin pola pencarian terlihat seperti: huruf 'a', lalu plus '+', lalu huruf 'x'. Namun, penulis kode tidak meng-escape karakter '+' sehingga pola pencarian sebenarnya terlihat seperti: huruf 'a' satu kali atau lebih, lalu huruf 'x':

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

Hasil eksekusi kode:

'a+x ! ! !'

Contoh

Sekarang penulis meng-escape plus dengan backslash. Sekarang pola pencarian terlihat seperti yang diinginkan: huruf 'a', lalu plus '+', lalu huruf 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

Hasil eksekusi kode:

'! ax aax aaax'

Contoh

Dalam contoh ini, polanya terlihat seperti: huruf 'a', lalu titik '.', lalu huruf 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

Hasil eksekusi kode:

'! abx azx'

Contoh

Dalam contoh berikutnya, penulis lupa meng-escape slash dan semua substring terpengaruh oleh regex, karena titik yang tidak di-escape mewakili karakter apa pun:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

Hasil eksekusi kode:

'! ! !'

Catatan

Perhatikan bahwa jika Anda lupa backslash untuk titik (ketika seharusnya mewakili dirinya sendiri) - hal ini mungkin tidak terlihat:

res = re.sub('a.x', '!', 'a.x') print(res) # mengembalikan '!', seperti yang kita inginkan

Secara visual berfungsi dengan benar (karena titik mewakili karakter apa pun, termasuk titik biasa '.'). Tetapi jika kita mengubah string tempat penggantian terjadi - kita akan melihat kesalahan kita:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # mengembalikan '! ! !', sedangkan yang diharapkan '! abx azx'

Daftar karakter khusus dan biasa

Jika meng-escape karakter biasa - tidak ada masalah - karakter tersebut tetap akan mewakili dirinya sendiri. Pengecualian - angka, angka tidak dapat di-escape.

Seringkali muncul keraguan, apakah karakter tertentu adalah karakter khusus. Beberapa orang sampai pada titik di mana mereka meng-escape semua karakter yang mencurigakan secara berurutan. Namun, ini adalah praktik yang buruk (mengotori regex dengan backslash).

Termasuk karakter khusus: $ ^ . * + ? \ / {} [] () |

Bukan karakter khusus: @ : , ' " - _ = < > % # ~ `& !

Tugas Praktis

Diberikan string:

txt = 'a.a aba aea'

Tuliskan regex yang akan menemukan string 'a.a', tanpa mengambil yang lainnya.

Diberikan string:

txt = '2+3 223 2223'

Tuliskan regex yang akan menemukan string '2+3', tanpa mengambil yang lainnya.

Diberikan string:

txt = '23 2+3 2++3 2+++3 345 567'

Tuliskan regex yang akan menemukan string '2+3', '2++3', '2+++3', tanpa mengambil yang lainnya (+ bisa berapa saja jumlahnya).

Diberikan string:

txt = '23 2+3 2++3 2+++3 445 677'

Tuliskan regex yang akan menemukan string '23', '2+3', '2++3', '2+++3', tanpa mengambil yang lainnya.

Diberikan string:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

Tuliskan regex yang akan menemukan string '*q+', '*qq+', '*qqq+', tanpa mengambil yang lainnya.

Diberikan string:

txt = '[abc] {abc} abc (abc) [abc]'

Tuliskan regex yang akan menemukan string dalam kurung siku dan menggantinya dengan '!'.

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