Beautify soal Word ke format AIKEN dengan Notepad++

Format AIKEN adalah salah satu format paling sederhana dan populer untuk mengimpor soal Pilihan Ganda (Multiple Choice) ke dalam Learning Management System (LMS) Moodle. Berbeda dengan format GIFT yang kaya akan fitur, AIKEN memiliki aturan penulisan yang sangat ketat: teks soal harus berada dalam satu baris, opsi jawaban harus diawali dengan huruf kapital (A., B., C., dst.), dan diakhiri dengan baris kunci jawaban berformat huruf kapital (ANSWER: A).

Artikel ini akan membedah penggunaan perintah Regular Expression (Regex) pada Notepad++ untuk menyulap teks soal (hasil salinan Word) yang berantakan menjadi format AIKEN yang siap diimpor ke Moodle.

Daftar Isi

Kondisi Awal

Kunci jawaban harus dituliskan dalam format
answer: a/b/c/…

Contoh soal

1. Berapa 1+1
a. 2
b. 11
c. 1
d. 3
e. 0
answer: A
2. Arah jam setengah dua dari utara adalah
a. barat daya
b. tenggara
c. barat laut
d. timur laut
e. selatan
ANSWER: d


3. Kombinasi antara warna merah dan biru akan menghasilkan warna sekunder
A. Ungu
B. Hijau
C. Jingga
D. Kuning muda
E. Hitam
ANSWER: A

Konversi Word ke format AIKEN

Salin semua soal ke dalam notepad++.

Tekan ctrl+h atau find and replace. 
Pada bagian Search Mode, pilih Regular expression.
Hilangkan centang pada matches newline (unchecked).
Lakukan langkah di bawah ini secara urut.

find: \t|([^\S\r\n]){2,}|(?i)(answer:\s*[a-e])\s*\r?\n\s*(?=.)
replace: (?1 :(?2$2\r\n\r\n: ))

find: (?i)^([a-e])\.\s*|^(answer:\s*)([a-e])
replace: \U$1\E(?1. )(?2ANSWER\x3A\x20\U$3\E)

find: (?:\G(?!^)|^(?=[^\r\n]*\b))[^\r\n]*\K\r?\n(?![A-E]\.\s|ANSWER:|\r?\n)
replace: ( )

Bedah Perintah Regex Tahap demi Tahap

Proses transformasi ini dibagi menjadi tiga tahap eksekusi. Berikut adalah penjelasan teknis untuk setiap perintah yang dijalankan.

Tahap 1: Normalisasi Spasi dan Jarak Antar Soal

Langkah pertama bertujuan untuk membersihkan tabulasi, merapikan spasi ganda, dan memastikan ada jarak dua baris kosong setelah kunci jawaban untuk memisahkan antar soal.

  • Find:\t|([^\S\r\n]){2,}|(?i)(answer:\s*[a-e])\s*\r?\n\s*(?=.)
    • \t: Mencari karakter Tab.
    • ([^\S\r\n]){2,}: Grup 1. Mencari dua atau lebih spasi horizontal (tidak termasuk jeda baris/enter).
    • (?i)(answer:\s*[a-e])\s*\r?\n\s*(?=.): Grup 2. Mencari teks awalan kunci jawaban (misal “answer: a” dengan huruf besar atau kecil), lalu mencari apakah teks soal berikutnya langsung menempel di bawahnya tanpa jarak yang benar.
  • Replace:(?1 :(?2$2\r\n\r\n: ))
    • Ini adalah perintah penggantian bersyarat (conditional replacement).
    • Jika Grup 1 ditemukan (spasi ganda), gantikan dengan satu spasi tunggal ( ).
    • Jika Grup 2 ditemukan (baris kunci jawaban), kembalikan teks kunci jawaban tersebut ($2) lalu tambahkan dua jeda baris bersih (\r\n\r\n) agar ada jarak yang pas dengan soal berikutnya.
    • Jika hanya Tab (\t) yang ditemukan, ubah menjadi satu spasi tunggal.

Tahap 2: Standardisasi Huruf Kapital (Opsi dan Jawaban)

Format AIKEN di Moodle sangat ketat; huruf opsi (a. b. c.) dan teks awalan jawaban (“answer:”) tidak akan terbaca jika ditulis menggunakan huruf kecil.

  • Find:(?i)^([a-e])\.\s*|^(answer:\s*)([a-e])
    • (?i)^([a-e])\.\s*: Grup 1. Mencari opsi jawaban a-e di awal baris (tidak peduli besar/kecil), yang diikuti oleh titik dan spasi.
    • ^(answer:\s*)([a-e]): Mencari baris kunci jawaban. Grup 2 menangkap kata “answer: ” dan Grup 3 menangkap huruf jawabannya (a-e).
  • Replace:\U$1\E(?1. )(?2ANSWER\x3A\x20\U$3\E)
    • \U$1\E: Mengubah huruf di Grup 1 (huruf opsi) menjadi huruf kapital (Uppercase).
    • (?1. ): Jika Grup 1 ditemukan, tambahkan titik dan satu spasi setelahnya.
    • (?2ANSWER\x3A\x20\U$3\E): Jika Grup 2 ditemukan, ubah secara paksa teksnya menjadi ANSWER: (menggunakan kode heksadesimal \x3A untuk titik dua dan \x20 untuk spasi), lalu ubah huruf kuncinya (Grup 3) menjadi huruf kapital dengan perintah \U$3\E.

Tahap 3: Menggabungkan Teks Soal Menjadi Satu Baris

Moodle akan menolak soal AIKEN jika teks pertanyaannya terputus menjadi beberapa baris (multi-line). Langkah ini menarik naik teks soal yang terputus menjadi satu baris utuh.

  • Find:(^\b.*)\r?\n(?![A-E]\.\s|ANSWER:|\r?\n)
    • (?:\G(?!^)|^(?=[^\r\n]*\b)): Memastikan pencarian dimulai secara berkesinambungan (continuous match) dari posisi kecocokan sebelumnya (\G), atau dari awal baris yang terdeteksi memiliki teks/karakter kata di dalamnya.
    • [^\r\n]*: Menangkap semua teks pada baris tersebut hingga mencapai ujung baris.
    • \K: Reset pencarian. Ini adalah fitur kunci. Memerintahkan Notepad++ untuk mengabaikan/mempertahankan teks soal yang sudah diseleksi sebelumnya, sehingga sistem hanya akan mengeksekusi karakter yang berada setelah tanda \K ini.
    • \r?\n: Mencari karakter jeda baris (Enter) di ujung kalimat. Karena ada \K sebelumnya, hanya karakter Enter ini yang akan diganti oleh spasi di kolom Replace.
    • (?![A-E]\.\s|ANSWER:|\r?\n): Negative lookahead (aturan pengecualian). Memerintahkan agar jeda baris tidak dihapus jika baris tepat di bawahnya adalah awalan opsi jawaban (A., B.), baris kunci jawaban (ANSWER:), atau baris kosong.
  • Replace:( )
    • Menghapus Enter yang ada di belakang hasil pencarian, dan menggantinya dengan satu spasi agar teks dari baris bawah naik dan tersambung rapi dengan baris di atasnya.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.