It checks if a string matches a pattern defined by a regular expression and returns True or False.
Click to reveal answer
beginner
How do you capture the matched text when using -match?
PowerShell stores the matched text in the automatic variable $Matches.
Click to reveal answer
beginner
What will this command output?
$text = 'Hello123'; $text -match '\d+'
It will output True because \d+ matches one or more digits in the string.
Click to reveal answer
beginner
How can you check if a string does NOT match a regex pattern in PowerShell?
Use the -notmatch operator, which returns True if the string does NOT match the pattern.
Click to reveal answer
beginner
What type of value does -match return?
It returns a Boolean value: True if the pattern matches, otherwise False.
Click to reveal answer
What does $string -match 'abc' return if $string contains 'xyzabc123'?
ANull
BFalse
CAn error
DTrue
✗ Incorrect
The string contains 'abc', so -match returns True.
Where does PowerShell store the matched text after using -match?
A$MatchText
B$MatchedString
C$Matches
D$Match
✗ Incorrect
PowerShell stores matched groups in the automatic variable $Matches.
What will 'PowerShell' -match '^Power' return?
ATrue
BNull
CAn error
DFalse
✗ Incorrect
The pattern '^Power' matches the start of the string 'PowerShell', so it returns True.
Which operator checks if a string does NOT match a regex pattern?
A-notmatch
B-match
C-contains
D-like
✗ Incorrect
-notmatch returns True if the string does NOT match the regex.
What type of pattern does -match use?
AWildcard pattern
BRegular expression
CExact string match
DJSON pattern
✗ Incorrect
-match uses regular expressions to find patterns in strings.
Explain how to use the -match operator in PowerShell to find if a string contains digits.
Think about how to write a regex for digits and how to check the result.
You got /4 concepts.
Describe the difference between -match and -notmatch in PowerShell.
Consider what happens when the pattern is found or not found.
You got /3 concepts.
Practice
(1/5)
1. What does the -match operator do in PowerShell?
easy
A. Converts a string to uppercase
B. Replaces text in a string
C. Splits a string into an array
D. Checks if a string fits a pattern using regular expressions
Solution
Step 1: Understand the purpose of -match
The -match operator is used to test if a string matches a regular expression pattern.
Step 2: Compare with other string operations
Replacing text uses -replace, splitting uses -split, and uppercase conversion uses ToUpper(). These are different from -match.
Final Answer:
Checks if a string fits a pattern using regular expressions -> Option D
Quick Check:
-match = pattern check [OK]
Hint: Remember: -match means 'does it fit the pattern?' [OK]
Common Mistakes:
Confusing -match with -replace or -split
Thinking -match changes the string
Assuming -match returns the matched text directly
2. Which of the following is the correct syntax to check if the variable $text contains the word 'hello' using -match?
easy
A. if ($text contains 'hello')
B. match $text 'hello'
C. $text -match 'hello'
D. $text =~ 'hello'
Solution
Step 1: Recall PowerShell -match syntax
The correct syntax is $variable -match 'pattern' to test if the variable matches the pattern.
Step 2: Evaluate each option
$text -match 'hello' uses the correct syntax. match $text 'hello' is invalid syntax. $text =~ 'hello' uses a Bash-like operator, not PowerShell. if ($text contains 'hello') uses a wrong operator for matching.
Final Answer:
$text -match 'hello' -> Option C
Quick Check:
Correct syntax = $text -match 'hello' [OK]
Hint: Use $var -match 'pattern' to test matches [OK]
Common Mistakes:
Using Bash or other language operators like =~
Writing match before the variable
Using 'contains' instead of -match
3. What will be the output of this PowerShell code?
$text = 'My phone number is 123-456-7890'
if ($text -match '\d{3}-\d{3}-\d{4}') {
$matches[0]
} else {
'No match'
}
medium
A. No match
B. 123-456-7890
C. \d{3}-\d{3}-\d{4}
D. My phone number is 123-456-7890
Solution
Step 1: Understand the regex pattern
The pattern \d{3}-\d{3}-\d{4} matches a phone number format with three digits, a dash, three digits, a dash, and four digits.
Step 2: Check if the string matches and what $matches[0] contains
The string contains '123-456-7890' which matches the pattern. $matches[0] holds the matched substring, so it outputs '123-456-7890'.
Final Answer:
123-456-7890 -> Option B
Quick Check:
Regex match found = matched text [OK]
Hint: Matched text is in $matches[0] after -match success [OK]
Common Mistakes:
Expecting the whole string instead of matched part
A. You must use $matches[0] to get the matched string
B. The regex pattern is invalid
C. $matches is an automatic variable, no error here
D. You need to use -like instead of -match
Solution
Step 1: Understand $matches variable usage
$matches is a hashtable holding matched groups. To get the matched string, you must access $matches[0].
Step 2: Analyze the code output
Using Write-Output $matches prints the whole hashtable, not the matched string. To print the matched text, use Write-Output $matches[0].
Final Answer:
You must use $matches[0] to get the matched string -> Option A
Quick Check:
Print matched text with $matches[0] [OK]
Hint: Use $matches[0] to print matched text, not $matches alone [OK]
Common Mistakes:
Printing $matches directly instead of $matches[0]
Thinking $matches is a string, not a hashtable
Confusing -match with -like operator
5. You want to extract all email addresses from a list of strings stored in $lines. Which PowerShell snippet correctly uses -match and $matches to collect emails into $emails?
hard
A. $emails = foreach ($line in $lines) { if ($line -match '[\w.-]+@[\w.-]+\.\w+') { $matches[0] } }
D. $emails = foreach ($line in $lines) { $line -match '[\w.-]+@[\w.-]+\.\w+' }
Solution
Step 1: Understand how to loop and match each line
We must check each line with -match and if it matches, collect the matched email from $matches[0].
Step 2: Evaluate each option
$emails = foreach ($line in $lines) { if ($line -match '[\w.-]+@[\w.-]+\.\w+') { $matches[0] } } loops through lines, tests with -match, and collects matched emails correctly. $emails = $lines -match '[\w.-]+@[\w.-]+\.\w+' tries to match the whole array at once, which doesn't work. $emails = $lines | Where-Object { $_ -contains '[\w.-]+@[\w.-]+\.\w+' } uses -contains which does not support regex. $emails = foreach ($line in $lines) { $line -match '[\w.-]+@[\w.-]+\.\w+' } runs -match but does not collect matched emails.
Final Answer:
$emails = foreach ($line in $lines) { if ($line -match '[\w.-]+@[\w.-]+\.\w+') { $matches[0] } } -> Option A
Quick Check:
Loop + -match + $matches[0] collects matches [OK]
Hint: Use foreach + if (-match) + $matches[0] to collect matches [OK]
Common Mistakes:
Trying to match the whole array at once
Using -contains instead of -match for regex
Not collecting $matches[0] inside the loop
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.