⊗pyPmREESCh 36 of 129 menu

Melarikan Aksara Khas dalam Ungkapan Biasa Python

Katakan kita ingin aksara khas mewakili dirinya sendiri. Untuk itu, ia perlu dilarikan menggunakan slash belakang. Mari kita lihat contoh-contohnya.

Contoh

Dalam contoh berikut, pengarang ungkapan biasa ingin pola carian kelihatan seperti ini: huruf 'a', kemudian tanda tambah '+', kemudian huruf 'x'. Walau bagaimanapun, pengarang kod tidak melarikan aksara '+' dan oleh itu pola carian sebenarnya kelihatan seperti ini: huruf 'a' satu kali atau lebih, kemudian huruf 'x':

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

Keputusan pelaksanaan kod:

'a+x ! ! !'

Contoh

Sekarang pengarang telah melarikan tanda tambah dengan slash belakang. Sekarang pola carian kelihatan seperti yang dikehendaki: huruf 'a', kemudian tanda tambah '+', kemudian huruf 'x':

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

Keputusan pelaksanaan kod:

'! ax aax aaax'

Contoh

Dalam contoh ini, pola kelihatan seperti ini: huruf 'a', kemudian titik '.', kemudian huruf 'x':

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

Keputusan pelaksanaan kod:

'! abx azx'

Contoh

Dalam contoh seterusnya, pengarang terlupa melarikan titik dan semua substring ditangkap oleh ungkapan biasa, kerana titik yang tidak dilarikan mewakili sebarang aksara:

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

Keputusan pelaksanaan kod:

'! ! !'

Catatan

Perhatikan bahawa jika anda terlupa slash belakang untuk titik (apabila ia sepatutnya mewakili dirinya sendiri) - ini mungkin sukar untuk diperhatikan:

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

Secara visual ia berfungsi dengan betul (kerana titik mewakili sebarang aksara, termasuk titik biasa '.'). Tetapi jika kita menukar talian di mana penggantian berlaku - kita akan melihat kesilapan kita:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # mengembalikan '! ! !', tetapi dijangkakan '! abx azx'

Senarai aksara khas dan biasa

Jika kita melarikan aksara biasa - tiada masalah akan berlaku - ia tetap akan mewakili dirinya sendiri. Pengecualian - digit, mereka tidak boleh dilarikan.

Sering timbul keraguan, sama ada aksara tertentu adalah khas. Ada yang sampai melarikan semua aksara yang mencurigakan secara berturut-turut. Walau bagaimanapun, ini adalah amalan yang tidak baik (mengacaukan ungkapan biasa dengan slash belakang).

Aksara khas: $ ^ . * + ? \ / {} [] () |

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

Tugas praktikal

Diberi talian:

txt = 'a.a aba aea'

Tulis ungkapan biasa yang akan mencari talian 'a.a', tanpa menangkap yang lain.

Diberi talian:

txt = '2+3 223 2223'

Tulis ungkapan biasa yang akan mencari talian '2+3', tanpa menangkap yang lain.

Diberi talian:

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

Tulis ungkapan biasa yang akan mencari talian '2+3', '2++3', '2+++3', tanpa menangkap yang lain (+ boleh sebarang kuantiti).

Diberi talian:

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

Tulis ungkapan biasa yang akan mencari talian '23', '2+3', '2++3', '2+++3', tanpa menangkap yang lain.

Diberi talian:

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

Tulis ungkapan biasa yang akan mencari talian '*q+', '*qq+', '*qqq+', tanpa menangkap yang lain.

Diberi talian:

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

Tulis ungkapan biasa yang akan mencari talian dalam kurungan segi empat dan menggantikannya dengan '!'.

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