rjgMtIfGYu4OB4QkmjHAeAZy7ixF2fuByIYhJHQr

Mem-parse Mutasi Rekening Danamon dengan RegEx

Mem-parse Mutasi Rekening Danamon dengan RegEx
Mem-parse Mutasi Rekening Danamon dengan RegEx

Ketika berhadapan dengan data mutasi Virtual Account (VA) Danamon dalam format teks mentah, developer sering dihadapkan pada tantangan besar. Formatnya cenderung unik, dan VA membutuhkan presisi tinggi karena merupakan identitas pembayaran. Daripada melakukan parsing manual, kita akan fokus pada alat yang paling efisien: Regular Expression (Regex).


1. Pola Awal: Fokus pada VA dan Jumlah

Pola pertama ini sangat sederhana, terlihat fokus utamanya adalah "menangkap" nomor Virtual Account dan jumlah transaksi.

/^\w+\s+\w+\s*\d+\s+(\d+)\s.+?000\d+\.([\d]+)\.00\s+[\d.]+/is

Jika kita bedah logika pemulaannya:

  • ^\w+\s+\w+\s*\d+: Ini adalah upaya untuk melewati data di awal baris (mungkin tanggal atau waktu) yang menggunakan kombinasi huruf dan angka. Pola ini mengandalkan \w+ (huruf, angka, underscore) dan \s* (spasi nol atau lebih).
  • (\d+) (Grup 1): Ini kemungkinan besar menangkap Nomor Transaksi atau sebagian kode VA awal.
  • 000\d+\.([\d]+)\.00 (Grup 2): Bagian ini sangat spesifik. Ini mengasumsikan nomor VA (atau bagian dari VA) diakhiri dengan 000 dan angka tertentu, diikuti oleh titik, lalu menangkap Jumlah Transaksi (Grup 2). Ketergantungan pada .00 di akhir jumlah sangat spesifik dan bisa jadi rapuh.
  • Kelemahan pola ini adalah ketergantungan pada literal string 000 dan .00. Jika format log berubah sedikit, pola ini pasti akan gagal!

2. Variasi Pola: Menambah Grup Penangkapan

Variasi ini adalah perbaikan yang mencoba menambah fleksibilitas dengan membuat lebih banyak Grup Penangkapan (<b>Capturing Group</b>) untuk memisahkan data awal baris.

/(^\w+)\s+(\w+)\s*(\d+)\s(\d+)\s(.+?000\d+\.)(([\d]+)\.00)\s+([\d.]+)/is

Inti perbaikannya adalah:

  • Memecah Awal Baris: Pola ini memecah bagian awal yang tadinya diabaikan menjadi Grup 1, 2, 3, dan 4. Tujuannya adalah menangkap setiap kata atau angka di awal baris sebagai entitas terpisah (misalnya, Hari, Tanggal, Waktu).
  • Mengisolasi Jumlah: (([\d]+)\.00) (Grup 6, 7) menunjukkan usaha untuk mengisolasi Jumlah Mutasi. Ini memungkinkan programmer untuk mendapatkan jumlah bersih (Grup 7) tanpa format .00. Ini langkah yang baik menuju data yang lebih bersih.

3. Pola Terbaru (Fix Pola Terbaru 3 Agustus 2022)

Pola ini terlihat seperti respons terhadap perubahan format yang signifikan, dengan fokus pada timestamps kompleks dan pemisahan kolom yang lebih eksplisit. Ini adalah pendekatan yang paling robust.

/(^.+?\d+\:\w+\:\w+)\s+(\w+\s+\w+\s+\w+\s+)\s+(\w+\s+\w+\s+\w+)\s+(\w+)\s+(\d+)\s(.+?0)\s+(([\d]+)\.00)\s+(([\d]+)\.[\d]+)/is

Perubahan drastis ini menunjukkan bahwa Danamon mengubah format timestamp dan deskripsi mereka:

  • Timestamp Kustom: (^.+?\d+\:\w+\:\w+) (Grup 1) adalah upaya cerdas untuk menangkap seluruh Timestamp yang unik Danamon (mungkin termasuk tanggal, jam, dan zona waktu) di awal baris.
  • Deskripsi Kolom: Pola menggunakan \w+\s+\w+\s+\w+ (Grup 2 & 3) yang sangat spesifik. Ini mengasumsikan ada tiga kata terpisah spasi yang membentuk judul kolom atau keterangan penting di baris tersebut. Ini adalah indikasi bahwa developer harus hardcode format ini karena log Danamon memang sangat terstruktur, tetapi juga sangat unik.
  • Kenaikan Jumlah Grup: Jumlah Grup Penangkapan menjadi 9, yang memungkinkan pemisahan data dengan sangat detail, termasuk mendapatkan jumlah bersih (Grup 8) dan saldo akhir (Grup 9).
  • Saran untuk developer pemula: Pola terakhir ini mungkin yang paling stabil, tetapi jika Danamon mengubah urutan satu kata saja di deskripsi (misalnya, dari 'VA Payment Received' menjadi 'Payment VA Received'), Anda harus kembali dan memodifikasi \w+\s+\w+\s+\w+ Anda!

Sebagai developer, kunci Anda adalah selalu merespons perubahan format dengan membuat pola Regex baru. Jangan pernah berasumsi pola lama akan selalu berlaku. Pahami struktur VA dan Mutasi Danamon, dan sesuaikan Regex Anda untuk selalu mencari pola itu, bukan posisi spasi.

Posting Komentar