0
0
Rubyprogramming~20 mins

Why regex is powerful in Ruby - Challenge Your Understanding

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Ruby Regex Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Ruby regex code?

Look at this Ruby code using regex. What will it print?

Ruby
text = "Hello Ruby 2024!"
match = text.match(/Ruby (\d{4})/)
puts match[1]
A2024
BRuby 2024
CHello
Dnil
Attempts:
2 left
💡 Hint

Remember, parentheses in regex capture groups. What does match[1] return?

🧠 Conceptual
intermediate
1:30remaining
Why is regex powerful in Ruby for text processing?

Choose the best reason why regex is powerful in Ruby.

ARuby requires external libraries to use regex.
BRegex in Ruby only works with strings longer than 10 characters.
CRuby integrates regex directly into its syntax with easy methods like <code>=~</code> and <code>match</code>.
DRuby does not support regex backreferences.
Attempts:
2 left
💡 Hint

Think about how Ruby lets you use regex without extra setup.

🔧 Debug
advanced
2:00remaining
What error does this Ruby regex code raise?

Find the error when running this Ruby code:

Ruby
pattern = /\d{3}-\d{2}-\d{4}/
text = "My number is 123-45-6789"
match = text.match(pattern)
puts match[5]
ASyntaxError
BIndexError
CTypeError
DNoMethodError
Attempts:
2 left
💡 Hint

Check what match[5] means if the regex has fewer capture groups.

📝 Syntax
advanced
2:00remaining
Which option correctly uses regex to find all words starting with 'a' in Ruby?

Choose the Ruby code that correctly finds all words starting with 'a' in a string.

Atext.scan(/\w*a\b/)
Btext.scan(/a\w*\b/)
Ctext.scan(/\b\w*a/)
Dtext.scan(/\ba\w*/)
Attempts:
2 left
💡 Hint

Remember, \b means word boundary and \w* means zero or more word characters.

🚀 Application
expert
2:30remaining
What is the value of 'result' after running this Ruby code?

This Ruby code uses regex with named capture groups. What is the value of result?

Ruby
text = "User: alice, ID: 42"
pattern = /User: (?<name>\w+), ID: (?<id>\d+)/
match = text.match(pattern)
result = {user: match[:name], id: match[:id].to_i}
A{user: "alice", id: 42}
B{:user=>"alice", :id=>42}
C{user: "alice", id: "42"}
D{"user"=>"alice", "id"=>42}
Attempts:
2 left
💡 Hint

Look at how the hash keys and values are created and the use of to_i.