Bird
Raised Fist0
Rubyprogramming~10 mins

Common patterns and character classes in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to check if the string contains only digits.

Ruby
if str =~ /\A[1]+\z/
  puts "Only digits"
else
  puts "Contains other characters"
end
Drag options to blanks, or click blank then click option'
A\d
B\w
C\s
D\D
Attempts:
3 left
💡 Hint
Common Mistakes
Using \w matches letters and digits, not only digits.
Using \D matches non-digit characters, which is opposite of what is needed.
2fill in blank
medium

Complete the code to find all whitespace characters in the string.

Ruby
matches = str.scan(/[1]/)
puts matches
Drag options to blanks, or click blank then click option'
A\S
B\s
C\w
D\d
Attempts:
3 left
💡 Hint
Common Mistakes
Using \S which matches non-whitespace characters.
Using \w which matches letters and digits, not spaces.
3fill in blank
hard

Fix the error in the regex to match a string that starts with a letter.

Ruby
if str =~ /^[1]/i
  puts "Starts with a letter"
else
  puts "Does not start with a letter"
end
Drag options to blanks, or click blank then click option'
A\s
B[0-9]
C\d
D[a-z]
Attempts:
3 left
💡 Hint
Common Mistakes
Using \d which matches digits, not letters.
Using [0-9] which matches digits, not letters.
4fill in blank
hard

Fill both blanks to create a hash with words as keys and their lengths as values, only for words longer than 3 characters.

Ruby
lengths = words.each_with_object({}) { |word, h| h[word] = word.[1] if word.[2] 3 }
Drag options to blanks, or click blank then click option'
Alength
Bsize
Clength >
Dsize >
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'length' as a method without parentheses in this context.
Using 'length >' or 'size >' as one option instead of separating method and operator.
5fill in blank
hard

Fill all three blanks to create a hash with uppercase words as keys and their lengths as values, only for words containing digits.

Ruby
result = words.each_with_object({}) { |word, h| h[word.[1]] = word.[2] if word =~ /[3]/ }
Drag options to blanks, or click blank then click option'
Aupcase
Bsize
C\d
Dlength
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'length' instead of 'size' inconsistently.
Using incorrect regex like /\w/ which matches letters and digits.

Practice

(1/5)
1. Which Ruby regular expression pattern matches any single digit character?
easy
A. /\D/
B. /\d/
C. /\s/
D. /\w/

Solution

  1. Step 1: Understand \d in Ruby regex

    The pattern \d matches any digit character (0-9).
  2. Step 2: Compare with other options

    \w matches word characters (letters, digits, underscore), \s matches whitespace, \D matches non-digit characters.
  3. Final Answer:

    /\d/ -> Option B
  4. Quick Check:

    Digit pattern = /\d/ [OK]
Hint: Remember \d means digit, \w means word character [OK]
Common Mistakes:
  • Confusing \d with \w
  • Using /\D/ which matches non-digits
  • Thinking \s matches digits
2. Which of the following is the correct Ruby syntax to match any word character one or more times?
easy
A. /\w+/
B. /\w*/
C. /\w?/
D. /\w{}/

Solution

  1. Step 1: Understand quantifiers in regex

    + means one or more times, * means zero or more, ? means zero or one.
  2. Step 2: Apply to \w

    /\w+/ matches one or more word characters, which is the correct syntax.
  3. Final Answer:

    /\w+/ -> Option A
  4. Quick Check:

    One or more word chars = /\w+/ [OK]
Hint: Use + for one or more matches in regex [OK]
Common Mistakes:
  • Using * which allows zero matches
  • Using ? which allows zero or one match
  • Using empty braces {} which is invalid
3. What is the output of this Ruby code?
text = "Room 101"
match = text.match(/\d+/)
puts match[0]
medium
A. 101
B. Room
C. 1
D. nil

Solution

  1. Step 1: Understand the regex /\d+/

    This pattern matches one or more digits in a row.
  2. Step 2: Apply match to string "Room 101"

    The digits "101" are matched as a group, so match[0] returns "101".
  3. Final Answer:

    101 -> Option A
  4. Quick Check:

    Digits matched = 101 [OK]
Hint: \d+ grabs all digits in a row, not just one [OK]
Common Mistakes:
  • Thinking it matches only one digit
  • Confusing match[0] with match object
  • Expecting the word part instead of digits
4. Find the error in this Ruby code snippet:
email = "user@example.com"
if email =~ /\w+@\w+.\w+/
  puts "Valid email"
else
  puts "Invalid email"
end
medium
A. The regex should use \d instead of \w
B. The =~ operator is used incorrectly
C. The regex does not escape the dot properly
D. The string should be in single quotes

Solution

  1. Step 1: Examine the regex pattern

    The pattern /\w+@\w+.\w+/ uses an unescaped . which matches any character, not a literal dot.
  2. Step 2: Identify the error

    The dot after the domain must be escaped as \. to match the literal "." in email addresses.
  3. Final Answer:

    The regex does not escape the dot properly -> Option C
  4. Quick Check:

    Escape literal dot as \. [OK]
Hint: Remember to escape dot as \. to match literal dot [OK]
Common Mistakes:
  • Thinking dot doesn't need escaping
  • Misusing =~ operator
  • Confusing \w with \d in email regex
5. You want to extract all words starting with a capital letter from the string "Hello World from Ruby". Which Ruby regex pattern should you use with scan?
hard
A. /\d+/
B. /\b[a-z]\w*/
C. /\s+/
D. /\b[A-Z]\w*/

Solution

  1. Step 1: Understand the requirement

    We want words starting with a capital letter, so first letter must be A-Z.
  2. Step 2: Analyze the regex options

    /\b[A-Z]\w*/ matches word boundary, then capital letter, then zero or more word chars.
  3. Step 3: Check other options

    /\b[a-z]\w*/ matches lowercase start, /\d+/ matches digits, /\s+/ matches spaces, so they don't fit.
  4. Final Answer:

    /\b[A-Z]\w*/ -> Option D
  5. Quick Check:

    Capital-start words = /\b[A-Z]\w*/ [OK]
Hint: Use \b for word boundary and [A-Z] for capital letters [OK]
Common Mistakes:
  • Using [a-z] instead of [A-Z]
  • Forgetting word boundary \b
  • Using digit or space patterns incorrectly
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