📖 Scenario: You are working on a simple text processing tool that needs to find specific patterns in user input. Regular expressions help you search for patterns like email addresses or phone numbers easily.
🎯 Goal: Build a Kotlin program that uses the Regex class to find all words starting with the letter 'a' in a given sentence.
📋 What You'll Learn
Create a string variable with a sentence containing multiple words
Create a Regex object to find words starting with 'a'
Use the findAll method of Regex to get all matches
Print all matched words separated by commas
💡 Why This Matters
🌍 Real World
Regular expressions are used in many apps to find patterns like emails, phone numbers, or keywords in text.
💼 Career
Knowing how to use Regex in Kotlin helps you build apps that process and validate text input efficiently.
Progress0 / 4 steps
1
Create the sentence string
Create a string variable called sentence and set it to the exact value: "An apple a day keeps the doctor away"
Kotlin
Hint
Use val sentence = "An apple a day keeps the doctor away" to create the string.
2
Create the Regex pattern
Create a Regex object called pattern with the exact pattern "\\ba\\w*" to find words starting with the letter 'a'.
Kotlin
Hint
Use val pattern = Regex("\\ba\\w*") to create the regex.
3
Find all matches using Regex
Use the findAll method of pattern on sentence and assign the result to a variable called matches.
Kotlin
Hint
Use val matches = pattern.findAll(sentence) to get all matches.
4
Print all matched words
Print all matched words separated by commas by mapping matches to their value and joining them with ", " inside a println.
Kotlin
Hint
Use println(matches.map { it.value }.joinToString(", ")) to print the words.
Practice
(1/5)
1. What does the Regex.matches() function do in Kotlin?
easy
A. Finds the first occurrence of the pattern in the string
B. Splits the string by the regex pattern
C. Replaces all matches of the pattern with a new string
D. Checks if the entire input string matches the regex pattern
Solution
Step 1: Understand Regex.matches() purpose
The matches() function returns true only if the whole input string fits the pattern exactly.
Step 2: Differentiate from other Regex methods
Other methods like find() look for parts of the string, but matches() requires full match.
Final Answer:
Checks if the entire input string matches the regex pattern -> Option D
Quick Check:
matches() = full string match [OK]
Hint: matches() means full string must fit pattern exactly [OK]
Common Mistakes:
Thinking matches() finds partial matches
Confusing matches() with find()
Assuming matches() replaces text
2. Which of the following is the correct way to create a Regex object to match digits in Kotlin?
easy
A. val regex = Regex("\\d+")
B. val regex = Regex("\d+")
C. val regex = Regex("\d")
D. val regex = Regex("[d]+")
Solution
Step 1: Understand escaping in Kotlin strings
In Kotlin, backslash must be escaped, so to represent \d (digit), we write "\\d".
Step 2: Check the quantifier usage
"\\d+" means one or more digits, which is correct for matching digits.
Final Answer:
val regex = Regex("\\d+") -> Option A
Quick Check:
Double backslash needed for \d in Kotlin strings [OK]
Hint: Escape backslash twice in Kotlin regex strings [OK]
Common Mistakes:
Using single backslash without escaping
Confusing character class syntax
Missing quantifier '+' for multiple digits
3. What will be the output of this Kotlin code?
val regex = Regex("a.b")
val input = "acb aab aeb"
val matches = regex.findAll(input).map { it.value }.toList()
println(matches)
medium
A. ["acb", "aab", "aeb"]
B. ["acb", "aab"]
C. ["aab", "aeb"]
D. []
Solution
Step 1: Understand the regex pattern "a.b"
The dot '.' matches any single character, so "a.b" matches 'a' + any char + 'b'.
Step 2: Check input string matches
Input has "acb", "aab", and "aeb" all matching the pattern.
Final Answer:
["acb", "aab", "aeb"] -> Option A
Quick Check:
Dot matches any char between 'a' and 'b' [OK]
Hint: Dot '.' matches any single character in regex [OK]
Common Mistakes:
Thinking dot matches zero or multiple chars
Missing some matches in the list
Confusing findAll with matches
4. Identify the error in this Kotlin code snippet:
val regex = Regex("[a-z")
val result = regex.matches("abc")
medium
A. Missing escape for square brackets
B. Unclosed character class in regex pattern
C. matches() cannot be used with character classes
D. matches() requires a raw string literal
Solution
Step 1: Check regex pattern syntax
The pattern "[a-z" has an opening square bracket but no closing bracket, causing a syntax error.
Step 2: Understand consequences
Regex constructor will throw an exception due to invalid pattern.
Final Answer:
Unclosed character class in regex pattern -> Option B
Quick Check:
Character classes must be closed with ']' [OK]
Hint: Always close character classes with ']' in regex [OK]
Common Mistakes:
Forgetting to close square brackets
Thinking matches() needs raw strings
Confusing escape rules for brackets
5. You want to replace all sequences of one or more spaces in a string with a single dash ('-'). Which Kotlin Regex and method combination correctly does this?
hard
A. Regex("\\s+").replaceAll(input, "-")
B. Regex("\\s*").replace(input, "-")
C. Regex("\\s+").replace(input, "-")
D. Regex("[ ]+").replaceAll(input, "-")
Solution
Step 1: Choose correct regex pattern for spaces
"\\s+" matches one or more whitespace characters; correct for sequences of spaces.
Step 2: Use correct Kotlin Regex method
Kotlin's Regex class uses replace() to replace all matches; replaceAll() does not exist.
Final Answer:
Regex("\\s+").replace(input, "-") -> Option C
Quick Check:
Use replace() with "\\s+" to replace spaces [OK]
Hint: Use replace() with "\\s+" to replace space sequences [OK]
Common Mistakes:
Using replaceAll() which is not in Kotlin Regex
Using "\\s*" which matches zero spaces
Not escaping backslash properly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.