Cara menggunakan REGEX pada Python
Show
LoginRegister Saya memiliki kode berikut yang melihat melalui file dalam satu direktori dan menyalin file yang berisi string tertentu ke direktori lain, tetapi saya mencoba untuk menggunakan Ekspresi Reguler karena string dapat berupa huruf besar dan kecil atau campuran keduanya. Berikut adalah kode yang berfungsi, sebelum saya mencoba menggunakan RegEx
Ini kode saya ketika saya mencoba menggunakan RegEx
Saya rasa saya perlu satu baris kode seperti itu
Tapi sepertinya saya tidak bisa mendapatkan apa pun untuk bekerja, jika seseorang bisa mengarahkan saya ke arah yang benar, itu akan dihargai. 2,032 Views Banyak aplikasi saat ini mengharuskan pattern matching Sebagai contoh, memeriksa validitas alamat e-mail, Semua hal tersebut dilakukan dengan bantuan Regular Expression. Apa itu Regular Expression?Contents
Regular Expression adalah suatu cara menggambarkan susunan pola dalam suatu kalimat. Regular Expression ini banyak digunakan dalam text processing. Kalian mungkin bertanya-tanya apa sih kegunaan Regular Expression yang sering disingkat regex ini? Pembahasan regex disini ditujukan untuk pemula sehingga pembahasannya tidak akan terlalu mendalam. Sebagai ilustrasi dari pemakaian regex, kita akan mengambil contoh berikut. Misalnya kalian memiliki sebuah daftar nama dan nomor telepon, kemudian ingin mencari pemilik nomor yang digit ke-3 nya adalah 8 dan digit terakhirnya adalah 9. Ataupun hanya ingin mengekstrak semua alamat e-mail ataupun website dalam suatu dokumen. Tentu yang kalian butuhkan adalah teknik Regular Expression. MetakarakterMetakarakter mempunyai makna khusus dalam penggunaan regex. Beberapa metakarakter yang sering digunakan untuk membuat regex adalah sebagai berikut:
Penjelasannya sebagai berikut
Package Regular ExpressionSetelah kalian pelajari metakaraketer diatas, selanjutnya kita akan membahas penerapan regular expression yaitu menggunakan R yang secara default sudah ada di package re. Modul ini sudah ada pada versi 1.5 yang re aslinya merupakan modul yang ditulis dalam bahasa C yang kemudian di-import ke dalam Python. Selanjutnya kita akan melihat bagaimana penerapan regex dengan bahasa Python. Regular Expression pada Python dikompilasi menjadi suatu instansi objek yang menyediakan metode-metode seperti matching, searching dan replacing serta fungsi-fungsi manipulasi teks lainnya. Untuk memakai regex ini, kita harus mengompilasinya dengan metode compile() dan bila ingin digunakan lagi, maka kita tidak perlu mengompilasi ulang regex tersebut, kita tinggal memakainya. Berikut contohnya: import re pattern = re.compile("coba*") Ekspresi reguler dilewatkan sebagai paramater string pada perintah
Kita akan menggunakannya dalam contoh-contoh selanjutnya. Python menawarkan dua operasi regex yang mendasar yakni match() dan search(). Perbedaan di antara keduanya,
Untuk fungsi metode match() dan search() ketika menemukan string yang cocok akan mengembalikan objek Match. Jika tidak menemukan string yang cocok, maka akan mengembalikan objek None. Untuk jelasnya, mari kita lihat contoh Operasi Matchimport re pat = re.compile(r'Python') m = pat.match("Python") print (m) print(m.string) hasilnya <_sre.SRE_Match object; span=(0, 6), match='Python'> Python artinya ditemukan cocok mulai dari index 0 sampai 6 pada string Python, namun berikut ini akan menghasilkan None karena tidak ada pada kalimat pertama! m = pat.match("Java dan Python") print (m) Operasi SearchKita akan coba menggunakan search m = pat.search("Python") print(m) hasilnya <_sre.SRE_Match object; span=(0, 6), match='Python'> Validasi Alamat Email menggunakan RegexSekarang kita lanjutkan cara menggunakan meta karakter regex untuk validasi email pat = re.compile(r'[\w.-]+@[\w.-]+') while 1: email = input('Masukkan alamat email Anda : ') if pat.match(email): print ("Selamat, alamat email yang Anda masukkan valid.") break else: print ("Maaf, alamat email yang Anda masukkan tidak valid.") Kode di atas bila dijalankan akan menghasilkan keluaran sebagai berikut: Masukkan alamat email Anda : mulk#com Maaf, alamat email yang Anda masukkan tidak valid. Masukkan alamat email Anda : softscients.com Maaf, alamat email yang Anda masukkan tidak valid. Masukkan alamat email Anda : Selamat, alamat email yang Anda masukkan valid. Atribut metode pada perintah SearchObjek Match yang dihasilkan dari penerapan perintah match() dan search() mempunyai atribut dan metode sendiri import re pat = re.compile(r'[A-Z]yth?on') s = "Saya sedang belajar Python dan Jython" m = pat.search(s) print(m) hasil <_sre.SRE_Match object; span=(20, 26), match='Python'> Kita cek langsung dengan perintah dir() dir(m) hasilnya ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string'] Beberapa metode yang sering digunakan adalah group(), start(), end() dan span(). Metode group() mengembalikan string yang cocok dengan pola yang kita inginkan. Metode start() mengembalikan nilai indeks awal string yang cocok, sedangkan metode end() mengembalikan nilai indeks akhir dari string yang cocok. Metode span() mengembalikan tuple yang berisi nilai indeks awal dan akhir dari string yang cocok. Kita coba seperti berikut kode dan hasilnya >>> m.group() 'Python' >>> m.start(), m.end() (20,26) >>> m.span() (20,26) Metode search() akan berhenti jika telah menemukan satu string yang cocok, bila kita ingin menemukan semua string yang cocok maka kita dapat menggunakan metode findall(). Kalian juga dapat menggunakan metode finditer() untuk mendapatkan nilai indeks awal dan akhir dari setiap string yang cocok. m = pat.findall(s) print(m) hasil kode regex python diatas yaitu ['Python', 'Jython'] ataupun kalian bisa menggunakan iterator iterator = pat.finditer(s) for it in iterator: print(it) hasilnya <_sre.SRE_Match object; span=(20, 26), match='Python'> <_sre.SRE_Match object; span=(31, 37), match='Jython'> Modifikasi string pada regular expression PythonModul re juga mendukung fungsi-fungsi modifikasi string, seperti metode split(), sub(), dan subn(). Kita akan bahas satu-persatu Metode Split Metode split() pada modul re sebenarnya hampir sama dengan metode split() pada objek string. Metode split() pada modul re ini berfungsi memecah/membagi bagian-bagian string setiap terjadi kecocokan dengan ekpresi reguler dan menempatkannya dalam objek list dan nilai kembaliannya berupa objek list tersebut. Metode split memiliki dua parameter.
import re pat = re.compile(r'\W+') h = pat.split("Saya sedang belajar Python") print(h) h2 = pat.split("Saya sedang belajar Python",2) print(h2) hasilnya regex kode python diatas yaitu ['Saya', 'sedang', 'belajar', 'Python'] ['Saya', 'sedang', 'belajar Python'] Kita coba lagi dengan mengubah meta karakternya pat = re.compile(r'a\w+') h3 = pat.split("Saya sedang belajar Python") print(h3) hasilnya ['S', ' sed', ' bel', ' Python'] coba lagi dengan kalimat lain pat = re.compile(r'y') h4 = pat.split("Python, Ruby dan Tcl") print(h4) hasil ['P', 'thon, Rub', ' dan Tcl'] Metode Sub Metode sub() akan mengganti semua substring yang cocok dengan ekpresi reguler yang diberikan dengan string baru yang kita inginkan. Metode sub() juga memiliki tiga parameter.
pat = re.compile(r'((P|J)+\w*|Ru+\w*)') s = "Saya belajar Python, Jython dan Ruby" h = pat.sub("bahasa scripting",s) print(h) hasil Saya belajar bahasa scripting, bahasa scripting dan bahasa scripting kalau dimasukan dengan paramater berikut h2 = pat.sub("bahasa scripting",s,2) print(h2) hasil Saya belajar bahasa scripting, bahasa scripting dan Ruby Metode Subn Metode subn() sebenarnya sama dengan metode sub(). Hanya saja nilai kembalian dari metode subn() ini berupa sebuah tuple yang mengandung dua elemen, yakni string perubahan yang dihasilkan dan banyaknya pergantian yang terjadi. Berikut contohnya: h3 = pat.subn("bahasa scripting",s) print(h3) hasil ('Saya belajar bahasa scripting, bahasa scripting dan bahasa scripting', 3) Regular Expression memang menawarkan berbagai kemampuan manipulasi teks yang baik, akan tetapi juga mempunyai keterbatasan. Regular Expression mempunyai batasan di mana tidak bisa melakukan pattern-matching pada data yang bersarang dan bertingkat seperti pada HTML dan XML yang menggunakan sistem parsing. Adakalanya ada hal yang bisa dilakukan oleh regex, namun ekspresi regulernya akan menjadi sangat rumit. Bila hal tersebut terjadi, kalian lebih baik membuat sendiri fungsi tersebut dalam bahasa Python yang tentunya akan lebih mudah dimengerti. Dalam hal ini, tentunya Anda bisa memilih kapan kita membutuhkan regular expression. Setiap hal pasti memiliki kelebihan dan kekurangan masing-masing ref: www.infolinux.co.id Apa itu Regex di Python?Regular expression adalah sebuah domain specific language (DSL) yang hadir sebagai sebuah library pada kebanyakan bahasa pemrograman, bukan hanya pada python. contoh: sebuah string memiliki format sebuah alamat email. contoh: mengganti semua ejaan American ke British.
Modul apa dalam python untuk menjalankan regex?Python memiliki modul re untuk melakukan hal – hal yang berkaitan dengan regex. Tapi sebelum itu, kita harus mempelajari terlebih dahulu cara menggunakan regex ini.
Apa itu file regex?Regex adalah singkatan dari Regular Expresion. Regex merupakan sebuah teks (string) yang mendefinisikan sebuah pola pencarian sehingga dapat membantu kita untuk melakukan matching (pencocokan), locate (pencarian), dan manipulasi teks.
Apa itu Findall?Fungsi findall() mengembalikan daftar yang berisi semua kecocokan. Daftar berisi kecocokan dalam urutan ditemukannya. Jika tidak ada kecocokan yang ditemukan, maka akan mengembalikan daftar kosong.
|