Regular Expression (regex) in PowerShell

ElementDescriptionExample
.Matches any single character except newline“h.t” matches “hat”, “hot”, “hit”
*Matches zero or more occurrences of the previous character“a*b” matches “b”, “ab”, “aab”, “aaab”
+Matches one or more occurrences of the previous character“a+b” matches “ab”, “aab”, “aaab”, but not “b”
?Matches zero or one occurrence of the previous character“colou?r” matches “color” and “colour”
^Matches the start of a line“^Hello” matches “Hello World” but not “World Hello”
$Matches the end of a line“World$” matches “Hello World” but not “World Hello”
[ ]Matches any single character in brackets“[aeiou]” matches any vowel
[^ ]Matches any single character not in brackets“[^aeiou]” matches any consonant
( )Groups characters“(ab)+” matches “ab”, “abab”, “ababab”
|Alternation (OR)“cat|dog” matches “cat” or “dog”
{ }Specifies exact number of occurrences to match“a{3}” matches exactly three “a”s
\dMatches any digit“\d{3}” matches three digits
\DMatches any non-digit“\D+” matches one or more non-digits
\wMatches any word character (a-z, A-Z, 0-9, _)“\w+” matches one or more word characters
\WMatches any non-word character“\W” matches any single non-word character
\sMatches any whitespace character“\s” matches space, tab, newline
\SMatches any non-whitespace character“\S+” matches one or more non-whitespace characters
\bMatches a word boundary“\bword\b” matches “word” as a whole word
\BMatches a non-word boundary“\Bword\B” matches “word” only if it’s part of a larger word
(?i)Makes the match case-insensitive“(?i)hello” matches “hello”, “Hello”, “HELLO”
(?m)Enables multiline mode“(?m)^start” matches “start” at the beginning of any line
(?s)Enables single-line mode (dot matches newline)“(?s).*” matches everything including newlines
(?<name>…)Named capturing group“(?<year>\d{4})” captures a year in a named group
(?:…)Non-capturing group“(?:ab)+” matches “ab”, “abab” without creating a capture group
(?=…)Positive lookahead“Jacob(?=\sSm)” matches “Jacob” only if followed by ” Sm”
(?!…)Negative lookahead“Jacob(?!\sSm)” matches “Jacob” only if not followed by ” Sm”
(?<=…)Positive lookbehind“(?<=Mr.)\s\w+” matches a name if preceded by “Mr.”
(?<!…)Negative lookbehind“(?<!Mr.)\s\w+” matches a name if not preceded by “Mr.”
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *