Bahasa Python - Ekspresi Biasa

Pada materi kita kali ini kita akan membahas beberapa hal mengenai ekspresi regular atau regular expression. Singkatnya,ekspresi reguler merupakan rangkaian karakter khusus yang membantu Anda mencocokkan atau menemukan string atau rangkaian string lainnya, menggunakan sintaks khusus yang dipegang dalam pola.

Nah, Sejauh ini kami telah membaca file, mencari pola dan mengekstraksi berbagai potongan garis yang kita anggap menarik. Kita telah menggunakan metode string seperti split dan menemukan dan menggunakan list dan string slicing untuk mengekstrak bagian dari lines.

Sehingga task pencarian dan penggalian tersebut ternyata sangat umum sehingga Python memiliki pustaka yang sangat kuat yang disebut ekspresi regular, menangani banyak task ini dengan cukup elegan. Dan alasan diperkenalkannya ekspresi reguler pada materi python kita ini adalah karena penggunaannya sangat powerfull namun sedikit rumit dan sintaksnya membutuhkan waktu untuk terbiasa.

Ekspresi reguler hampir merupakan bahasa pemrograman kecil mereka sendiri untuk mencari dan menguraikan string. Sebagai soal fakta, seluruh buku telah ditulis pada topik ekspresi reguler.

Pustaka ekspresi reguler harus diimpor ke program Anda sebelum Anda dapat menggunakannya. Penggunaan paling sederhana dari pustaka ekspresi reguler adalah fungsi pencarian (). Program berikut menunjukkan penggunaan fungsi pencarian yang sepele.

# Search lines yang berisi 'From'
import re
hand = open('mbox-short.txt')
for line in hand:
    line = line.rstrip()
    if re.search('From:', line):
    print(line)

Kita membuka file, loop melalui setiap lines, dan menggunakan ekspresi regular search() untuk hanya mencetak lines yang berisi string “From:“. Program ini tidak menggunakan kekuatan ekspresi reguler yang sebenarnya, karena kita bisa dengan mudah gunakan line.find () untuk mencapai hasil yang sama.

Namun kekuatan ekspresi reguler muncul ketika kita menambahkan karakter khusus ke string pencarian yang memungkinkan kita untuk lebih tepat mengontrol garis mana yang cocok dengan string. Menambahkan karakter khusus ini ke ekspresi reguler memungkinkan kita melakukannya Pencocokan dan ekstraksi canggih saat menulis kode yang sangat sedikit.

Sebagai contoh, karakter ‘caret’ digunakan dalam ekspresi reguler untuk mencocokkan “awal” suatu lines. Kita dapat mengubah program untuk hanya mencocokkan lines di mana “From:” berada di awal baris sebagai berikut:

# Search lines yang dimulai dengan 'From'
import re
hand = open('mbox-short.txt')
for line in hand:
    line = line.rstrip()
    if re.search('^From:', line):
        print(line)

Sekarang kita hanya akan mencocokkan garis yang dimulai dengan string “Fromi:“. Ini masih merupakan contoh yang sangat sederhana yang dapat kita lakukan setara dengan metode startswith() dari pustaka string. Tapi ini berfungsi untuk memperkenalkan gagasan bahwa ekspresi reguler mengandung karakter tindakan khusus yang memberi kita kontrol lebih besar seperti apa yang akan cocok dengan ekspresi reguler.

Sekarang kita coba penggunaan karakter ‘matching’ dalam ekspresi regular. Ada sejumlah karakter khusus lainnya yang memungkinkan kita membangun ekspresi reguler yang lebih kuat. Karakter khusus yang paling sering digunakan adalah periode atau titik berhenti penuh, yang cocok dengan karakter apa pun.

Dalam contoh berikut, ekspresi reguler F..m: akan cocok dengan salah satu string “From:“, “Fxxm:“, “F12m:“, atau “F! @M:” sejak periode karakter dalam ekspresi reguler cocok dengan karakter apa pun.

# Cari lines yang dimulai dengan 'F', diikuti oleh
# 2 karakter, diikuti dengan 'm:'

import re
hand = open('mbox-short.txt')
for line in hand:
    line = line.rstrip()
    if re.search('^F..m:', line):
        print(line)

Ini sangat kuat ketika dikombinasikan dengan kemampuan untuk menunjukkan bahwa karakter dapat diulang beberapa kali menggunakan * atau + karakter dalam ekspresi reguler Anda. Karakter khusus ini berarti bahwa alih-alih mencocokkan satu karakter dalam string pencarian, mereka cocok dengan karakter ‘zero-or-more’ (dalam kasus tanda bintang) atau satu-atau-lebih dari karakter (dalam kasus tanda plus).

Kita selanjutnya dapat mempersempit lines yang kita cocokkan menggunakan karakter wildcard berulang dalam contoh berikut:

# Search lines yang dimulai dengan From dan memiliki tanda

import re
hand = open('mbox-short.txt')
for line in hand:
    line = line.rstrip()
    if re.search('^From:[email protected]', line):
        print(line)

String search ˆFrom:. + @ Akan berhasil mencocokkan lines yang dimulai dengan “From:“, diikuti oleh satu atau lebih karakter (. +), Diikuti dengan tanda-tanda. Jadi ini akan cocok dengan lines berikut:

From: [email protected]

Anda dapat menganggap. + Wildcard sebagai perluasan untuk mencocokkan semua karakter antara karakter titik dua dan tanda-tanda.

From:[email protected]

Adalah baik untuk memikirkan karakter plus dan asterisk sebagai “pushy (memaksa)”. Misalnya, string berikut akan cocok dengan tanda-tanda terakhir pada string saat. + pushes outwards(Mendorong keluar), seperti yang ditunjukkan di bawah ini:

From: [email protected], [email protected], dan [email protected]

Adalah mungkin untuk memberi tahu tanda bintang atau tanda tambah agar tidak “greedy(tamak)” dengan menambahkan karakter lain.

Oke saya kira sekian dulu pengenalan ekspresi regular. Pada materi selanjutnya akan kita bahas bagaimana mengekstrak data menggunakan ekspresi reguler