Bird
Raised Fist0
PowerShellscripting~20 mins

Regex with Select-String in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Regex Master with Select-String
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of Select-String with simple regex
What is the output of this PowerShell command when run on a file containing the lines:
apple
banana
apricot
grape

Command:
Select-String -Pattern '^a' -Path 'fruits.txt'
PowerShell
Select-String -Pattern '^a' -Path 'fruits.txt'
Aapple<br>banana<br>apricot<br>grape
Bbanana<br>grape
Capple<br>apricot
DNo output
Attempts:
2 left
💡 Hint
The regex '^a' matches lines starting with 'a'.
💻 Command Output
intermediate
2:00remaining
Select-String with case-insensitive regex
Given a file 'colors.txt' with lines:
Red
blue
GREEN
Yellow

What is the output of:
Select-String -Pattern 'green' -Path 'colors.txt' -CaseSensitive:$false
PowerShell
Select-String -Pattern 'green' -Path 'colors.txt' -CaseSensitive:$false
AGREEN
Bgreen
CNo output
DRed
Attempts:
2 left
💡 Hint
CaseSensitive:$false makes the search ignore case.
📝 Syntax
advanced
2:00remaining
Identify the correct regex pattern syntax in Select-String
Which option correctly matches lines containing exactly three digits in a row using Select-String?
PowerShell
Select-String -Pattern '<pattern>' -Path 'numbers.txt'
A[0-9]{3}
B\d{3}
C}3{d\
D\d{,3}
Attempts:
2 left
💡 Hint
Use character classes and quantifiers correctly.
🔧 Debug
advanced
2:00remaining
Why does this Select-String command fail?
You run this command:
Select-String -Pattern '\w+@\w+\.com' -Path 'emails.txt'

But it returns no matches even though the file contains emails like 'user@example.com'. Why?
PowerShell
Select-String -Pattern '\w+@\w+\.com' -Path 'emails.txt'
ABecause the file path is incorrect
BBecause '\w' is not supported in PowerShell regex, use '[a-zA-Z0-9_]' instead
CBecause the pattern needs single quotes instead of double quotes
DBecause Select-String does not support regex
Attempts:
2 left
💡 Hint
Check if '\w' is recognized in PowerShell regex.
🚀 Application
expert
3:00remaining
Extracting matched text with Select-String and regex groups
You want to extract only the domain part from email addresses in 'emails.txt' using Select-String with regex groups. Which command correctly outputs just the domain (e.g., 'example.com')?
PowerShell
Select-String -Pattern '<pattern>' -Path 'emails.txt' | ForEach-Object { <extract> }
ASelect-String -Pattern '^[\w.-]+@([\w.-]+)$' -Path 'emails.txt' | ForEach-Object { $_.Matches.Groups[1].Value }
BSelect-String -Pattern '^[\w.-]+@([\w.-]+)$' -Path 'emails.txt' | ForEach-Object { $_.Groups[1].Value }
CSelect-String -Pattern '^[\w.-]+@([\w.-]+)$' -Path 'emails.txt' | ForEach-Object { $_.Matches[1].Groups[0].Value }
DSelect-String -Pattern '^[\w.-]+@([\w.-]+)$' -Path 'emails.txt' | ForEach-Object { $_.Matches[0].Groups[1].Value }
Attempts:
2 left
💡 Hint
Check how to access regex groups from Select-String Matches property.

Practice

(1/5)
1. What does the PowerShell cmdlet Select-String -Pattern "error" -Path "log.txt" do?
easy
A. Creates a new file named 'error' from 'log.txt'.
B. Deletes all lines containing 'error' from 'log.txt'.
C. Replaces the word 'error' with 'warning' in 'log.txt'.
D. Searches the file 'log.txt' for lines containing the word 'error'.

Solution

  1. Step 1: Understand Select-String usage

    Select-String searches text for a pattern, here 'error'.
  2. Step 2: Analyze parameters

    The -Pattern specifies the regex 'error', and -Path points to the file 'log.txt'.
  3. Final Answer:

    Searches the file 'log.txt' for lines containing the word 'error'. -> Option D
  4. Quick Check:

    Select-String with -Pattern finds matching lines [OK]
Hint: Select-String finds matching lines in files using regex [OK]
Common Mistakes:
  • Thinking Select-String edits files
  • Confusing -Pattern with replacement
  • Assuming it creates new files
2. Which of the following is the correct syntax to search for the word 'fail' in a file named 'output.log' using Select-String?
easy
A. Select-String -Pattern 'fail' -Path 'output.log'
B. Select-String -Find 'fail' -File 'output.log'
C. Select-String -Search 'fail' -FilePath 'output.log'
D. Select-String -Pattern fail -File output.log

Solution

  1. Step 1: Recall correct parameter names

    -Pattern specifies the regex pattern, and -Path specifies the file path.
  2. Step 2: Match syntax to options

    Select-String -Pattern 'fail' -Path 'output.log' uses -Pattern 'fail' and -Path 'output.log', which is correct syntax.
  3. Final Answer:

    Select-String -Pattern 'fail' -Path 'output.log' -> Option A
  4. Quick Check:

    Correct parameters are -Pattern and -Path [OK]
Hint: Use -Pattern for regex and -Path for file in Select-String [OK]
Common Mistakes:
  • Using -File instead of -Path
  • Using -Search or -Find which don't exist
  • Omitting quotes around pattern or path
3. Given a file 'data.txt' with the following lines:
apple
banana
apricot
blueberry
avocado

What will the command Select-String -Pattern '^a' -Path 'data.txt' output?
medium
A. Lines containing 'a' anywhere: apple, banana, apricot, avocado
B. Lines ending with 'a': banana
C. Lines starting with 'a': apple, apricot, avocado
D. No output because '^a' is invalid regex

Solution

  1. Step 1: Understand the regex '^a'

    The caret '^' means start of line, so '^a' matches lines starting with 'a'.
  2. Step 2: Apply regex to file lines

    Lines starting with 'a' are 'apple', 'apricot', and 'avocado'.
  3. Final Answer:

    Lines starting with 'a': apple, apricot, avocado -> Option C
  4. Quick Check:

    Regex '^a' matches line start with 'a' [OK]
Hint: ^ means line start in regex, so matches lines starting with 'a' [OK]
Common Mistakes:
  • Thinking '^a' matches anywhere in line
  • Confusing '^' with end of line
  • Assuming no matches due to regex error
4. You run Select-String -Pattern "[0-9]+" -Path "file.txt" but get no output, even though 'file.txt' contains numbers. What is the likely problem?
medium
A. The regex pattern is incorrect for matching numbers.
B. The file path is wrong or file does not exist.
C. Select-String does not support regex patterns.
D. The command needs -AllMatches to find numbers.

Solution

  1. Step 1: Check regex pattern validity

    The pattern "[0-9]+" correctly matches one or more digits.
  2. Step 2: Consider file path and existence

    If no output, likely the file path is incorrect or the file does not exist, so no lines are searched.
  3. Final Answer:

    The file path is wrong or file does not exist. -> Option B
  4. Quick Check:

    Valid regex but no output means file issue [OK]
Hint: Check file path and existence if no matches found [OK]
Common Mistakes:
  • Assuming regex is wrong when it's correct
  • Thinking Select-String can't use regex
  • Believing -AllMatches is required for any match
5. You want to find all lines in 'report.txt' that contain either 'error' or 'fail' (case-insensitive). Which command correctly does this?
hard
A. Select-String -Pattern '(?i)error|fail' -Path 'report.txt'
B. Select-String -Pattern 'error|fail' -Path 'report.txt' -CaseSensitive
C. Select-String -Pattern 'error|fail' -Path 'report.txt' -IgnoreCase
D. Select-String -Pattern '[errorfail]' -Path 'report.txt'

Solution

  1. Step 1: Understand regex for 'error' or 'fail'

    The pattern 'error|fail' matches either word. To ignore case, use '(?i)' inline regex flag.
  2. Step 2: Analyze options for case-insensitivity

    Select-String -Pattern '(?i)error|fail' -Path 'report.txt' uses (?i)error|fail which makes the pattern case-insensitive. Options B and C use invalid or non-existent parameters for case sensitivity.
  3. Final Answer:

    Select-String -Pattern '(?i)error|fail' -Path 'report.txt' -> Option A
  4. Quick Check:

    Use '(?i)' for case-insensitive regex in Select-String [OK]
Hint: Use '(?i)' in regex for case-insensitive matching [OK]
Common Mistakes:
  • Using -IgnoreCase which is not a Select-String parameter
  • Using character class '[errorfail]' which matches single chars
  • Using -CaseSensitive which enforces case sensitivity
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