Artikel ini dapat digunakan, disalin, dan disebarluaskan. Cukup cantumkan sumber asli. Jika isinya mengandung kebenaran, semoga memberi kebaikan bagi kita yang memanfaatkannya. Jika ada yang salah, mohon kiranya penulis dimaafkan. Dan sangat baik, jika kesalahan tersebut dapat diberitahukan kepada penulis.
Yanmarshus, 28 September 2005, yan[at]daunsalam[dot]net

CR, LF, dan Regex

Ini hanyalah sebuah catatan singkat tentang penggunaan karakter CR (Carriage Return) dan LF (Line Feed), serta kasus pada regular expression. Catatan ini saya buat karena pengalaman kegagalan dalam penggunaan regular expression. Kegagalan di sini terjadi karena perbedaan penggunaan tanda baris baru (Newline) di beberapa sistem operasi.

Untuk DOS/Windows, tanda baris baru menggunakan kedua karakter tersebut, yaitu CR dan LF. Untuk sistem UNIX/Linux dan keluarganya, hanya menggunakan karakter LF. Sedangkan MAC hanya menggunakan CR.

Untuk contoh kasus ini, terjadi ketika akan melakukan pencarian terhadap baris baru yang berurutan satu atau lebih. Regular expression yang umum digunakan adalah seperti berikut :

\n+

Kita misalkan sebuah fungsi yang menggunakan regex untuk mencari dan mengganti (search and replace) adalah :

  regex_replace(s,r,string).
    s : string yang akan dicari
    r : string pengganti
    string : adalah string yang menjadi objek proses
  --------------------------------------------------
  contoh penggunaannya adalah :

  regex_replace("\n+","\n",string)

Contoh penggunaan di atas akan mengganti semua baris baru yang berurutan satu atau lebih, menjadi satu baris baru saja. Di sinilah masalahnya muncul. Jika file berasal dari sistem DOS/Windows, bisa jadi fungsi di atas tidak akan berhasil. Salah satu caranya adalah dengan membuang terlebih dahulu tanda CR dengan :

  regex_replace("\r","",string)

kemudian baru menggunakan

  regex_replace("\n+","\n",string)

Demikian juga halnya dengan file yang menggunakan format sistem MAC. Perlu diperhatikan penggunaan tanda baris baru pada sistem tersebut.

Kasus seperti ini tergantung berbagai faktor. Misalnya regular expression yang digunakan berada dalam platform apa, dan implementasi terhadap ketentuan regex itu sendiri.