Bird
Raised Fist0
Rubyprogramming~5 mins

Regex literal syntax (/pattern/) in Ruby

Choose your learning style10 modes available
Introduction

Regex literals let you write patterns to find or match text easily.

Checking if a word exists in a sentence.
Validating simple input like phone numbers or emails.
Splitting text by a pattern.
Replacing parts of text that match a pattern.
Syntax
Ruby
/pattern/

The pattern goes between two slashes /.

You can add options after the second slash to change behavior (like case-insensitive).

Examples
Matches 'cat' anywhere in the text.
Ruby
/cat/
Matches 'dog' ignoring uppercase or lowercase letters.
Ruby
/dog/i
Matches one or more digits (numbers).
Ruby
/\d+/
Sample Program

This program checks if the word 'cat' is in the text, ignoring case. It prints a message based on the result.

Ruby
text = "I have a Cat and a dog."

if text =~ /cat/i
  puts "Found cat!"
else
  puts "No cat found."
end
OutputSuccess
Important Notes

Use \ to escape special characters inside the pattern.

The =~ operator returns the position of the match or nil if no match.

Summary

Regex literals are written between slashes /pattern/.

They help find or check text patterns quickly.

You can add options like i for case-insensitive matching.

Practice

(1/5)
1. What is the correct way to write a regex literal in Ruby to match the word cat?
easy
A. regex('cat')
B. "cat"
C. 'cat'
D. /cat/

Solution

  1. Step 1: Understand regex literal syntax

    In Ruby, regex literals are written between slashes, like /pattern/.
  2. Step 2: Identify the correct pattern for 'cat'

    The pattern to match the word 'cat' is simply /cat/.
  3. Final Answer:

    /cat/ -> Option D
  4. Quick Check:

    Regex literal = /pattern/ [OK]
Hint: Regex literals always use slashes /pattern/ in Ruby [OK]
Common Mistakes:
  • Using quotes instead of slashes
  • Calling a non-existent regex() function
  • Confusing string and regex syntax
2. Which of the following is the correct regex literal to match the word Dog case-insensitively in Ruby?
easy
A. /Dog/m
B. /Dog/g
C. /Dog/i
D. /Dog/

Solution

  1. Step 1: Identify the case-insensitive option

    In Ruby regex, the i option after the slashes makes matching case-insensitive.
  2. Step 2: Check the options given

    Only /Dog/i uses the correct i flag for case-insensitive matching.
  3. Final Answer:

    /Dog/i -> Option C
  4. Quick Check:

    Case-insensitive flag = i [OK]
Hint: Use /pattern/i for case-insensitive regex in Ruby [OK]
Common Mistakes:
  • Using g or m flags which mean different things
  • Omitting the i flag for case-insensitivity
  • Placing flags inside the slashes
3. What will be the output of this Ruby code?
text = "Hello World"
match = text =~ /world/i
puts match
medium
A. nil
B. 6
C. 0
D. Error

Solution

  1. Step 1: Understand the =~ operator with regex

    The operator =~ returns the index of the first match or nil if no match.
  2. Step 2: Analyze the regex and string

    The regex /world/i matches 'World' ignoring case. In "Hello World", 'World' starts at index 6 (0-based).
  3. Final Answer:

    6 -> Option B
  4. Quick Check:

    Case-insensitive match index = 6 [OK]
Hint: =~ returns match start index or nil if no match [OK]
Common Mistakes:
  • Ignoring case-insensitive flag i
  • Thinking output is true/false instead of index
  • Assuming match starts at 0 always
4. Identify the error in this Ruby regex literal:
pattern = /hello/i/
medium
A. Extra slash at the end causes syntax error
B. Missing quotes around pattern
C. Missing i flag for case-insensitivity
D. Regex literals cannot have flags

Solution

  1. Step 1: Check regex literal syntax

    A regex literal starts and ends with a single slash. Here, there is an extra slash at the end.
  2. Step 2: Identify the syntax error

    The extra slash after /hello/i is invalid and causes a syntax error.
  3. Final Answer:

    Extra slash at the end causes syntax error -> Option A
  4. Quick Check:

    Regex literal must start and end with one slash pair [OK]
Hint: Regex literals have exactly two slashes, no extras [OK]
Common Mistakes:
  • Adding extra slash after regex
  • Confusing regex with string quotes
  • Thinking flags go inside slashes
5. You want to find all words starting with a or A in a string using a regex literal. Which regex literal correctly matches this requirement?
hard
A. /\b[a]\w*/i
B. /\b[A]\w*/
C. /\b[a]\w*/
D. /\b[a-z]\w*/i

Solution

  1. Step 1: Understand the requirement

    We want words starting with 'a' or 'A'. Using case-insensitive flag i simplifies matching both.
  2. Step 2: Analyze options

    /\b[a]\w*/i uses /\b[a]\w*/i which matches word boundary, then 'a' (case-insensitive), then zero or more word chars. This matches words starting with 'a' or 'A'.
  3. Final Answer:

    /\b[a]\w*/i -> Option A
  4. Quick Check:

    Use i flag to match both 'a' and 'A' easily [OK]
Hint: Use /pattern/i to match letters ignoring case [OK]
Common Mistakes:
  • Listing both 'a' and 'A' inside brackets without i flag
  • Using wrong character classes
  • Missing word boundary \b
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard