Ekspresi reguler (bahasa Inggris: regular expression, dipendekkan menjadi regex atau regexp; juga disebut
Ekspresi rasional) adalah serangkaian karakter yang mendefinisikan sebuah pola pencarian. Pola tersebut biasanya digunakan oleh algoritme pencarian string untuk melakukan operasi "cari" atau "cari dan ganti" pada string, atau untuk memeriksa string masukan.
Ekspresi reguler merupakan teknik yang dikembangakan dalam bidang ilmu komputer teori dan teori bahasa formal.
Konsep ini muncul pada 1950-an ketika matematikawan Amerika Stephen Cole Kleene memformalkan deskripsi sebuah bahasa
reguler. Konsep ini menjadi banyak digunakan untuk utilitas pengolahan teks Unix. Beberapa sintaks untuk menulis
Ekspresi reguler telah dibuat sejak 1980-an, salah satunya adalah standar POSIX dan yang satu lagi, yang sering digunakan, adalah sintaks Perl.
Ekspresi reguler digunakan dalam mesin pencari, dialog cari dan ganti dalam pengolah kata dan penyunting teks, dalam utilitas pengolahan teks seperti sed dan AWK dan dalam analisis leksikal. Kebanyakan bahasa pemrograman menyediakan pengolah
Ekspresi reguler baik secara bawaan atau melalui pustaka.
Sejarah
Ekspresi reguler berawal pada tahun 1951, ketika matematikawan Stephen Cole Kleene menjelaskan bahasa
reguler menggunakan notasi matematikanya yang disebut regular events. Notasi ini dilahirkan dari bidang ilmu komputer teori, dalam subbidang teori otomata (pemodelan komputasi) dan deskripsi dan klasifikasi bahasa formal. Implementasi pencocokan pola lainnya di antaranya adalah bahasa SNOBOL, yang tidak menggunakan
Ekspresi reguler, melainkan menggunakan konstruksi pencocokan polanya sendiri.
Ekspresi reguler menjadi populer sejak tahun 1968 dalam dua jenis penggunaan: pencocokan pola dalam penyunting teks dan analisis leksikal dalam kompilator. Salah satu kemunculan pertama
Ekspresi reguler dalam bentuk program adalah ketika Ken Thompson menggunakan notasi Kleene dalam penyunting QED sebagai cara mencocokkan pola dalam berkas teks. Demi kecepatan, Thompson mengimplementasikan pencocokan
Ekspresi reguler dengan melakukan kompilasi tepat waktu (JIT) ke kode IBM 7094 di Compatible Time-Sharing System, sebuah contoh awal penting dari kompilasi JIT. Dia kemudian menambahkan kemampuan ini ke penyunting Unix ed, yang kemudian berujung pada peralatan pencari populer grep menggunakan
Ekspresi reguler ("grep" adalah kata yang diturunkan dari perintah untuk mencari
Ekspresi reguler di penyunting ed: g/re/p, singkatan dari "Global search for Regular Expression and Print matching lines"). Pada saat yang sama dengan Thompson mengembangkan QED, sekelompok peneliti di antaranya Douglas T. Ross mengimplementasikan sebuah perkakas berdasar
Ekspresi reguler yang digunakan untuk analisis leksikal dalam perancangan kompilator.
Banyak variasi dari bentuk-bentuk awal
Ekspresi reguler digunakan di program-program Unix di Bell Labs pada 1970-an, di antaranya adalah vi, lex, sed, AWK, dan expr, dan program lainnya seperti Emacs.
Ekspresi reguler kemudian diadopsi oleh berbagai jenis program, dengan bentuk-bentuk awalnya distandarkan sebagai standar POSIX.2 pada tahun 1992.
Pada 1980-an
Ekspresi reguler yang lebih rumit muncul dalam Perl, yang awalnya diturunkan dari sebuah pustaka
Ekspresi reguler yang ditulis oleh Henry Spencer (1986), yang kemudian menuliskan sebuah implementasi Advanced Regular Expressions untuk Tcl. Pustaka Tcl merupakan impelementasi gabungan NFA/DFA dengan karakteristik performa yang meningkat. Proyek perangkat lunak yang telah mengadopsi implementasi
Ekspresi reguler Tcl Spencer di antaranya adalah PostgreSQL. Perl kemudian memperluas pustaka awal Spencer untuk menambahkan banyak fitur baru. Salah satu bagian dari alasan mendesain Raku adalah untuk memperbaiki integrasi ekpresi
reguler Perl, dan untuk meningkatkan kemampuannya untuk memungkinkan mendefinisikan tata bahasa penguraian
Ekspresi. Hasilnya adalah sebuah bahasa mini yang disebut aturan Raku, yang digunakan untuk mendefinisikan tata bahasa Raku serta menyediakan peralatan untuk pemrogram bahasa Raku. Aturan-aturan ini mempertahankan fitur yang sudah ada dalam
Ekspresi reguler Perl 5.x, tetapi juga memungkinkan definisi pengurai turun rekursif bergaya BNF melalui subaturan.
Penggunaan
Ekspresi reguler dalam standar informsi terstruktur untuk pemodelan dokumen dan basis data dimulai pada 1960-an dan diperluas pada 1980-an ketika standar industri seperti ISO SGML (didahului oleh "GCA 101-1983" ANSI) berkonsolidasi. Kernel dari standar bahasa spesifikasi struktur terdiri dari
Ekspresi reguler. Penggunaannya paling terlihat dalam sintaks grup elemen DTD.
Mulai tahun 1997, Philip Hazel mengemangkan PCRE (Perl Compatible Regular Expressions), yang mencoba menirukan fungsionalitas
Ekspresi reguler Perl dan digunakan dalam banyak perkakas modern seperti PHP dan Apache HTTP Server.
Sekarang,
Ekspresi reguler didukung oleh banyak bahasa pemrograman, program pengolah teks (khususnya lekser), penyunting teks yang lebih maju, dan beberapa program lain. Dukungan untuk
Ekspresi reguler merupakan bagian dari pustaka standar banyak bahasa pemrograman, seperti Java dan Python, dan merupakan bagian dari sintaks bahasa pemrograman lainnya, seperti Perl dan ECMAScript. Implementasi dari fungsionalitas
Ekspresi reguler disebut sebuah mesin
Ekspresi reguler (bahasa Inggris: regex machine), dan terdapat pustaka-pustaka yang bisa digunakan. Pada akhir 2010-an, beberapa perusahaan mulai menawarkan perangkat keras, FPGA, implementasi GPU dari mesin
Ekspresi reguler yang kompatibel PCRE yang lebih cepat dibandingkan dengan implementasi CPU.
Referensi
Daftar pustaka
Pranala luar
Media tentang Regex di Wikimedia Commons
Regular Expressions di Curlie (dari DMOZ)
ISO/IEC 9945-2:1993 Information technology – Portable Operating System Interface (POSIX) – Part 2: Shell and Utilities
ISO/IEC 9945-2:2002 Information technology – Portable Operating System Interface (POSIX) – Part 2: System Interfaces
ISO/IEC 9945-2:2003 Information technology – Portable Operating System Interface (POSIX) – Part 2: System Interfaces
ISO/IEC/IEEE 9945:2009 Information technology – Portable Operating System Interface (POSIX®) Base Specifications, Issue 7
Regular Expression, IEEE Std 1003.1-2017, Open Group