Ekspresi reguler, sering disingkat sebagai regex atau regexp, adalah alat yang ampuh untuk bekerja dengan pola teks di Ruby. Mereka memungkinkan Anda untuk mencari, mencocokkan, mengekstrak, dan memanipulasi string berdasarkan pola tertentu. Baik Anda memvalidasi input pengguna, mengurai data, atau melakukan pemrosesan teks yang kompleks, ekspresi reguler Ruby menyediakan solusi yang ringkas dan fleksibel.
Tutorial ini akan memandu Anda melalui dasar-dasar ekspresi reguler di Ruby, dari sintaks dasar hingga teknik lanjutan.
Untuk pengembang Ruby yang ingin menyederhanakan alur kerja pengujian API mereka, pertimbangkan Apidog, alternatif yang kuat yang lebih unggul dari Postman dalam beberapa aspek utama.
Apidog menggabungkan dokumentasi API, debugging, pengujian otomatis, dan mocking dalam satu platform yang kohesif, menawarkan pengalaman yang lebih terintegrasi daripada pendekatan fragmentasi Postman.

Dengan antarmuka yang intuitif, validasi skema bawaan, dan fitur kolaborasi tim yang komprehensif, Apidog membuat pengelolaan proyek API yang kompleks menjadi jauh lebih mudah.

Pengembang Ruby akan menghargai dukungan Apidog yang kuat untuk otomatisasi melalui antarmuka baris perintahnya, integrasi Git yang mulus untuk kontrol versi, dan kompatibilitas OpenAPI/Swagger yang superior—penting untuk memelihara dokumentasi yang akurat bersama aplikasi Ruby Anda.

Baik Anda membangun layanan RESTful dengan Rails atau membuat layanan mikro dengan Sinatra, toolkit all-in-one Apidog menghilangkan peralihan konteks yang mengganggu pengguna Postman, memungkinkan Anda untuk fokus pada hal yang paling penting: menulis kode Ruby yang hebat.
Membuat Ekspresi Reguler Ruby
Di Ruby, ada beberapa cara untuk membuat ekspresi reguler:
Metode 1: Menggunakan Garis Miring dalam Ekspresi Reguler Ruby
Cara paling umum untuk membuat ekspresi reguler di Ruby adalah dengan menyertakan pola di antara garis miring ke depan:
/Ruby/ # Membuat ekspresi reguler yang cocok dengan "Ruby"
Metode 2: Menggunakan Notasi Persen untuk Ekspresi Reguler Ruby
Anda juga dapat menggunakan notasi persen dengan indikator %r
:
%r(Ruby) # Sama dengan /Ruby/
Ini sangat berguna ketika pola Anda berisi banyak garis miring ke depan, karena membantu menghindari pelolosan yang berlebihan.
Metode 3: Menggunakan Kelas Regexp untuk Ekspresi Reguler Ruby
Pendekatan lain adalah dengan menggunakan konstruktor Regexp.new
:
Regexp.new("Ruby") # Sama dengan /Ruby/
Semua metode ini membuat instance dari kelas Regexp
.
Simbol Ekspresi Reguler Ruby Dasar
Ekspresi reguler Ruby menggunakan simbol khusus untuk mewakili pola yang berbeda. Berikut adalah yang mendasar:
Simbol | Deskripsi | Contoh | Cocok dengan |
---|---|---|---|
. |
Cocok dengan karakter tunggal apa pun | /a.b/ |
"axb", "a2b", "a b" |
* |
Cocok dengan 0 atau lebih elemen sebelumnya | /ab*c/ |
"ac", "abc", "abbc" |
+ |
Cocok dengan 1 atau lebih elemen sebelumnya | /ab+c/ |
"abc", "abbc", "abbbc" |
? |
Cocok dengan 0 atau 1 elemen sebelumnya | /ab?c/ |
"ac", "abc" |
\| |
Alternasi (ATAU) | /cat\|dog/ |
"cat", "dog" |
[] |
Kelas karakter - cocok dengan salah satu karakter yang terdaftar | /[aeiou]/ |
"a", "e", "i", "o", "u" |
() |
Membuat grup tangkapan | /(abc)+/ |
"abc", "abcabc" |
^ |
Cocok dengan awal string | /^start/ |
"start of string" |
$ |
Cocok dengan akhir string | /end$/ |
"the end" |
\\\\ |
Meloloskan karakter khusus | /\\\\\\\\/ |
"\" |
Karakter Khusus dalam Ekspresi Reguler Ruby
Ekspresi reguler Ruby menyertakan kelas karakter yang telah ditentukan sebelumnya yang membuat pencocokan pola menjadi lebih nyaman:
Simbol | Deskripsi | Contoh | Cocok dengan |
---|---|---|---|
\\\\d |
Cocok dengan digit apa pun (0-9) | /\\\\d+/ |
"123", "9" |
\\\\D |
Cocok dengan non-digit apa pun | /\\\\D+/ |
"abc", "!@#" |
\\\\w |
Cocok dengan karakter kata apa pun (alfanumerik + garis bawah) | /\\\\w+/ |
"ruby123", "user_name" |
\\\\W |
Cocok dengan karakter non-kata apa pun | /\\\\W+/ |
"!@#", " " |
\\\\s |
Cocok dengan karakter spasi putih apa pun | /\\\\s+/ |
" ", "\t", "\n" |
\\\\S |
Cocok dengan karakter non-spasi putih apa pun | /\\\\S+/ |
"hello", "123" |
\\\\A |
Cocok dengan awal string | /\\\\AHello/ |
"Hello world" |
\\\\z |
Cocok dengan akhir string | /world\\\\z/ |
"Hello world" |
\\\\Z |
Cocok dengan akhir string atau sebelum baris baru terakhir | /world\\\\Z/ |
"Hello world\n" |
Kuantifier dalam Ekspresi Reguler Ruby
Kuantifier memungkinkan Anda menentukan berapa kali suatu pola harus cocok:
Kuantifier | Deskripsi | Contoh | Cocok dengan |
---|---|---|---|
* |
0 atau lebih pengulangan | /ab*c/ |
"ac", "abc", "abbc" |
+ |
1 atau lebih pengulangan | /ab+c/ |
"abc", "abbc" |
? |
0 atau 1 pengulangan | /colou?r/ |
"color", "colour" |
{n} |
Tepat n pengulangan | /a{3}/ |
"aaa" |
{n,} |
Setidaknya n pengulangan | /a{2,}/ |
"aa", "aaa", "aaaa" |
{n,m} |
Antara n dan m pengulangan | /a{2,4}/ |
"aa", "aaa", "aaaa" |
Misalnya, untuk mencocokkan format nomor telepon seperti "123-456-7890", Anda dapat menggunakan:
/\\\\d{3}-\\\\d{3}-\\\\d{4}/
Pencocokan Pola dengan Ekspresi Reguler Ruby
Menggunakan Operator Pencocokan dalam Ekspresi Reguler Ruby
Cara paling dasar untuk memeriksa apakah suatu pola cocok dengan string adalah dengan menggunakan operator =~
:
text = "The quick brown fox"
if /quick/ =~ text
puts "Cocok ditemukan di indeks #{$~.begin(0)}"
else
puts "Tidak ada kecocokan yang ditemukan"
end
Operator =~
mengembalikan indeks kecocokan pertama atau nil
jika tidak ada kecocokan yang ditemukan. Setelah kecocokan berhasil, Anda dapat menggunakan Regexp.last_match
atau variabel global $~
untuk mengakses informasi tentang kecocokan tersebut.
Menangkap Grup dalam Ekspresi Reguler Ruby
Anda dapat menggunakan tanda kurung untuk membuat grup tangkapan dan mengekstrak bagian tertentu dari kecocokan:
text = "Name: John, Age: 30"
if match_data = /Name: (\\\\w+), Age: (\\\\d+)/.match(text)
name = match_data[1] # Grup tangkapan pertama
age = match_data[2] # Grup tangkapan kedua
puts "Name: #{name}, Age: #{age}"
end
Mengekstrak Konten yang Cocok dalam Ekspresi Reguler Ruby
Untuk mengekstrak semua kemunculan pola, gunakan metode scan
:
text = "Contact us at support@example.com or info@example.org"
emails = text.scan(/\\\\w+@\\\\w+\\\\.\\\\w+/)
puts emails.inspect # ["support@example.com", "info@example.org"]
Bekerja dengan Ekspresi Reguler Ruby dalam Praktik
Penggantian String dengan Ekspresi Reguler Ruby
Metode gsub
memungkinkan Anda mengganti semua kemunculan pola dengan string yang ditentukan:
text = "apple banana apple"
new_text = text.gsub(/apple/, "orange")
puts new_text # "orange banana orange"
Anda juga dapat menggunakan blok untuk penggantian yang lebih kompleks:
text = "The price is $10"
new_text = text.gsub(/\\\\$(\\\\d+)/) do |match|
"$#{$1.to_i * 1.1}" # Tingkatkan harga sebesar 10%
end
puts new_text # "The price is $11"
Alternasi dalam Ekspresi Reguler Ruby
Simbol pipa (|
) memungkinkan Anda mencocokkan satu pola atau yang lain:
/cat|dog/.match("I have a cat") # Cocok dengan "cat"
/cat|dog/.match("I have a dog") # Cocok dengan "dog"
Anda dapat menggunakan tanda kurung untuk mengelompokkan alternatif:
/(apple|banana) pie/.match("I love apple pie") # Cocok dengan "apple pie"
Kelas Karakter dalam Ekspresi Reguler Ruby
Kelas karakter memungkinkan Anda mencocokkan karakter tunggal apa pun dari suatu set:
/[aeiou]/.match("hello") # Cocok dengan "e"
/[0-9]/.match("agent007") # Cocok dengan "0"
Anda juga dapat meniadakan kelas karakter:
/[^0-9]/.match("agent007") # Cocok dengan "a"
Operasi String dengan Ekspresi Reguler Ruby
Memulai dan Mengakhiri Kecocokan dalam Ekspresi Reguler Ruby
Ruby menyediakan metode yang nyaman untuk memeriksa apakah suatu string dimulai atau diakhiri dengan pola tertentu:
"Hello, World!".start_with?("Hello") # true
"Hello, World!".end_with?("World!") # true
Meskipun metode ini tidak berbasis regex, mereka sering digunakan bersama dengan ekspresi reguler untuk tugas manipulasi string.
Variabel Global dalam Ekspresi Reguler Ruby
Setelah kecocokan berhasil, Ruby menetapkan beberapa variabel global:
$&
- Teks yang cocok lengkap- `$`` - Bagian string sebelum kecocokan
$'
- Bagian string setelah kecocokan
/bb/ =~ "aabbcc"
puts $` # "aa"
puts $& # "bb"
puts $' # "cc"
Modifier untuk Ekspresi Reguler Ruby
Ekspresi reguler Ruby mendukung berbagai modifier yang mengubah cara pola ditafsirkan:
Modifier | Deskripsi | Contoh |
---|---|---|
i |
Pencocokan tidak peka huruf besar/kecil | /ruby/i cocok dengan "Ruby", "RUBY", "rUbY" |
m |
Mode multi-baris (titik cocok dengan baris baru) | /./m cocok dengan karakter apa pun termasuk baris baru |
x |
Mode diperluas (memungkinkan komentar dan spasi putih) | /pattern # comment/x |
o |
Lakukan interpolasi #{} hanya sekali | /#{pattern}/o |
u |
Pengkodean UTF-8 | /\\\\u{1F600}/u cocok dengan emoji đŸ˜€ |
Contoh:
/ruby/ =~ "RUBY" # nil (tidak ada kecocokan)
/ruby/i =~ "RUBY" # 0 (cocok di awal)
# Tanpa modifier 'm', titik tidak cocok dengan baris baru
/a.b/ =~ "a\\\\nb" # nil
# Dengan modifier 'm', titik juga cocok dengan baris baru
/a.b/m =~ "a\\\\nb" # 0
Teknik Ekspresi Reguler Ruby Tingkat Lanjut
Grup Non-Penangkapan dalam Ekspresi Reguler Ruby
Terkadang Anda memerlukan pengelompokan tanpa menangkap teks yang cocok:
/(?:ab)+c/.match("ababc") # Cocok dengan "ababc" tanpa menangkap "ab"
Lookahead dan Lookbehind dalam Ekspresi Reguler Ruby
Asersi Lookahead memungkinkan Anda mencocokkan pola hanya jika diikuti oleh pola lain:
# Cocokkan 'apple' hanya jika diikuti oleh 'pie'
/apple(?= pie)/.match("apple pie") # Cocok dengan "apple"
/apple(?= pie)/.match("apple tart") # Tidak ada kecocokan
# Cocokkan 'apple' hanya jika TIDAK diikuti oleh 'pie'
/apple(?! pie)/.match("apple tart") # Cocok dengan "apple"
Asersi Lookbehind bekerja serupa tetapi memeriksa apa yang ada sebelumnya:
# Cocokkan 'pie' hanya jika didahului oleh 'apple'
/(?<=apple )pie/.match("apple pie") # Cocok dengan "pie"
/(?<=apple )pie/.match("cherry pie") # Tidak ada kecocokan
Tips Kinerja untuk Ekspresi Reguler Ruby
- Bersikap spesifik: Pola yang lebih spesifik berkinerja lebih baik daripada pola umum
- Hindari backtracking yang berlebihan: Pola kompleks dengan banyak kuantifier dapat menyebabkan masalah kinerja
- Gunakan jangkar: Jika sesuai, gunakan
\\\\A
,\\\\z
,^
dan$
untuk membatasi di mana kecocokan dapat terjadi - Pertimbangkan alternatif: Terkadang metode string sederhana seperti
include?
ataustart_with?
lebih cepat daripada regex untuk kasus sederhana
Kesimpulan tentang Ekspresi Reguler Ruby
Ekspresi reguler Ruby adalah alat yang ampuh dalam toolkit pemrograman Anda. Mereka memungkinkan Anda untuk melakukan pemrosesan teks yang kompleks dengan sintaks yang ringkas. Meskipun sintaksnya mungkin tampak menakutkan pada awalnya, menguasai ekspresi reguler akan secara signifikan meningkatkan produktivitas Anda saat bekerja dengan teks di Ruby.
Latihan adalah kunci untuk menjadi mahir dengan ekspresi reguler. Mulailah dengan pola sederhana dan secara bertahap gabungkan fitur yang lebih kompleks saat Anda merasa nyaman dengan dasar-dasarnya. Banyak alat online seperti Rubular (https://rubular.com/) dapat membantu Anda menguji dan men-debug ekspresi reguler Anda secara interaktif.
Dengan memahami konsep yang dibahas dalam tutorial ini, Anda akan diperlengkapi dengan baik untuk mengatasi berbagai tantangan manipulasi string dalam proyek Ruby Anda.