Ruby:
Using regular expressions
How to:
Basic Matching
To match a string against a simple pattern, you can use the match
method. Below, we’re checking if the word “Ruby” exists in a given string.
if /Ruby/.match("Hello, Ruby!")
puts "Match found!"
end
# Output: Match found!
Pattern Matching with Variables
You can interpolate variables into your regex using the #{}
syntax, making your patterns dynamic.
language = "Ruby"
if /#{language}/.match("Programming in Ruby is fun.")
puts "Talking about Ruby!"
end
# Output: Talking about Ruby!
Using Regex for Substitution
The gsub
method allows you to replace every occurrence of a pattern with a specified replacement string.
puts "foobarfoo".gsub(/foo/, "bar")
# Output: barbarbar
Capturing
Parentheses in a regex are used for capturing parts of a match. The match
method returns a MatchData
object, which you can use to access captures.
match_data = /(\w+): (\d+)/.match("Age: 30")
puts match_data[1] # Captured label
puts match_data[2] # Captured value
# Output:
# Age
# 30
Using Third-Party Libraries
Although Ruby’s standard library is powerful, you might sometimes need more specialized functionality. One popular gem for working with regex is Oniguruma
, which provides additional regex features beyond the built-in Ruby regex engine.
Install it using:
gem install oniguruma
Example usage could look like this (assuming you have required oniguruma
after installing it):
# This is a more advanced example and might require additional setup
require 'oniguruma'
pattern = Oniguruma::ORegexp.new('(\d+)')
match_data = pattern.match("The number is 42.")
puts match_data[1]
# Output: 42
Remember, while powerful, regular expressions can become complex and hard to manage for more complicated patterns. Aim for readability, and consider alternative methods if your regex becomes too convoluted.