Bird
Raised Fist0
PowerShellscripting~20 mins

Common regex patterns in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Regex PowerShell Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this PowerShell regex match?
Given the string 'Contact: user@example.com', what will be the output of this command?

$string = 'Contact: user@example.com' if ($string -match '\b\w+@\w+\.\w+\b') { $matches[0] }
PowerShell
$string = 'Contact: user@example.com'
if ($string -match '\b\w+@\w+\.\w+\b') { $matches[0] }
Auser@example.com
BContact
Cexample.com
DNo match
Attempts:
2 left
💡 Hint
Look for the pattern that matches an email format.
💻 Command Output
intermediate
2:00remaining
What does this regex extract from the date string?
Given the string 'Date: 2024-06-15', what will this command output?

$date = 'Date: 2024-06-15' if ($date -match '(\d{4})-(\d{2})-(\d{2})') { "$($matches[1])/$($matches[2])/$($matches[3])" }
PowerShell
$date = 'Date: 2024-06-15'
if ($date -match '(\d{4})-(\d{2})-(\d{2})') { "$($matches[1])/$($matches[2])/$($matches[3])" }
ANo match
BDate
C06-15-2024
D2024/06/15
Attempts:
2 left
💡 Hint
The regex captures year, month, and day in groups.
📝 Syntax
advanced
2:00remaining
Which regex pattern matches a US phone number format?
Which option correctly matches a US phone number like (123) 456-7890 in PowerShell regex?
A\d{3}-\d{3}-\d{4}
B\(\d{3}\) \d{3}-\d{4}
C\(\d{3}\)\d{3}-\d{4}
D\(\d{3}\) \d{3} \d{4}
Attempts:
2 left
💡 Hint
Look for the pattern with parentheses, space, and dash in correct places.
🔧 Debug
advanced
2:00remaining
Why does this regex fail to match an IP address?
This PowerShell code tries to match an IP address but fails:

$ip = '192.168.1.1' if ($ip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') { 'Match' } else { 'No match' }

Why does it fail?
AThe dot (.) is not escaped, so it matches any character.
BThe regex pattern is missing anchors ^ and $.
CThe backslashes are not escaped properly in the regex string.
DThe quantifiers {1,3} are invalid in PowerShell regex.
Attempts:
2 left
💡 Hint
Check how backslashes are handled in PowerShell strings.
🚀 Application
expert
3:00remaining
Extract all hashtags from a tweet using PowerShell regex
You have this tweet string:

$tweet = 'Learning #PowerShell and #regex is fun! #automation'

Which PowerShell command extracts all hashtags as an array?
A[regex]::Matches($tweet, '#\w+').ForEach({ $_.Value })
B[regex]::Matches($tweet, '#\w+').Value
C([regex]::Matches($tweet, '#\w+')).Value
D[regex]::Matches($tweet, '#\w+').Cast().Select({ $_.Value })
Attempts:
2 left
💡 Hint
Look for a method to iterate over matches and extract their values.

Practice

(1/5)
1. Which regex pattern matches any single digit from 0 to 9 in PowerShell?
easy
A. \d
B. \w
C. \s
D. \D

Solution

  1. Step 1: Understand regex digit shorthand

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

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

    \d -> Option A
  4. Quick Check:

    Digit shorthand = \d [OK]
Hint: Remember \d means digit, \w means word character [OK]
Common Mistakes:
  • Confusing \d with \w or \s
  • Using uppercase \D which means non-digit
  • Thinking \w matches only letters
2. Which of the following is the correct PowerShell regex pattern to match a string that starts with 'abc'?
easy
A. abc*
B. abc$
C. ^abc
D. *abc

Solution

  1. Step 1: Understand regex anchors

    The caret ^ matches the start of a string, so ^abc matches strings starting with 'abc'.
  2. Step 2: Check other options

    abc$ matches strings ending with 'abc', abc* matches 'ab' followed by zero or more 'c's, *abc is invalid syntax.
  3. Final Answer:

    ^abc -> Option C
  4. Quick Check:

    Start anchor = ^abc [OK]
Hint: Use ^ at start to match beginning of string [OK]
Common Mistakes:
  • Using $ instead of ^ for start of string
  • Misunderstanding * as wildcard for any chars
  • Placing * at start which is invalid
3. What will be the output of this PowerShell command?
$text = 'User123'
if ($text -match '\w{4}\d{3}') { 'Match' } else { 'No Match' }
medium
A. Match
B. No Match
C. Error
D. false

Solution

  1. Step 1: Analyze the regex pattern

    \w{4} matches exactly 4 word characters, \d{3} matches exactly 3 digits. Together they match 7 characters: 4 word chars + 3 digits.
  2. Step 2: Check the input string

    'User123' has 4 letters 'User' and 3 digits '123', so it matches the pattern.
  3. Final Answer:

    Match -> Option A
  4. Quick Check:

    4 letters + 3 digits = Match [OK]
Hint: Count characters to match {n} quantifiers exactly [OK]
Common Mistakes:
  • Thinking \w includes only letters, ignoring digits
  • Confusing {n} with * or + quantifiers
  • Not escaping backslash properly in PowerShell string
4. Identify the error in this PowerShell regex usage:
$email = 'test@example.com'
if ($email -match '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2}') { 'Valid' } else { 'Invalid' }
medium
A. Missing escape for dot before domain extension
B. Incorrect character class for username
C. Using single quotes prevents regex from working
D. Regex pattern is correct, no error

Solution

  1. Step 1: Review regex pattern components

    The pattern matches username with allowed chars, an @, domain name, a literal dot (escaped), and domain extension of 2+ letters.
  2. Step 2: Check PowerShell string usage

    Single quotes in PowerShell treat string literally, so \ is treated as a single backslash, correctly escaping the dot.
  3. Final Answer:

    Regex pattern is correct, no error -> Option D
  4. Quick Check:

    Proper escaping and pattern = Correct [OK]
Hint: Single quotes keep regex escapes intact in PowerShell [OK]
Common Mistakes:
  • Thinking dot needs double escape in single quotes
  • Assuming single quotes disable regex
  • Misreading character classes as incorrect
5. You want to extract all words starting with a capital letter from a string in PowerShell. Which regex pattern should you use?
hard
A. \b[a-z][A-Z]*\b
B. \b[A-Z][a-z]*\b
C. [A-Z]+\b
D. \b[A-Z]+[0-9]*\b

Solution

  1. Step 1: Understand the requirement

    We want words starting with a capital letter, followed by zero or more lowercase letters.
  2. Step 2: Analyze each pattern

    A: \b[A-Z][a-z]*\b matches word boundary, one uppercase letter, then zero or more lowercase letters, then word boundary - correct.
    B: starts with lowercase letter, so incorrect.
    C: matches one or more uppercase letters but no word boundary start.
    D: matches uppercase letters followed by digits, not only letters.
  3. Final Answer:

    \b[A-Z][a-z]*\b -> Option B
  4. Quick Check:

    Capital start + lowercase letters = \b[A-Z][a-z]*\b [OK]
Hint: Use \b for word boundary and [A-Z] for capital start [OK]
Common Mistakes:
  • Ignoring word boundaries causing partial matches
  • Using [a-z][A-Z]* which starts with lowercase
  • Including digits when only letters needed
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