Regular Expressions

PowerShell – Writing Regular Expressions

A regular expression is a string, written using a special regular expression language, that helps a computer identify strings that are of a particular format—such as an IP address, a UNC, or an e-mail address. A well-written regular expression has the ability to allow a Windows PowerShell script to accept as valid or reject as invalid data that does not conform to the format you’ve specified.

The Windows PowerShell –match operator compares a string to a regular expression and then returns either True or False depending on whether the string matches the regex.

Here is an example of a simple match

PS C:\> "WinAdmin.org" -match "WIn"
True
PS C:\> "WinAdmin.org" -match "windows"
False

By default, a regex is case-insensitive in PowerShell. But if you want to match case sensitive, you can use -cmatch

PS C:\> "WinAdmin.org" -cmatch "admin"
False
PS C:\> "WinAdmin.org" -cmatch "Admin"
True

Regular Expressions – Wildcards and Repeaters

A regex can contain a few wildcard characters.

. (period) – matches one instance of any character

? (question mark) – matches zero or one instance of any character

* matches zero or more of the specified characters

+ matches one or more of the specified characters.

PS C:\> "hello" -match "h.llo"
True
PS C:\> "hello" -match "h?ello"
True
PS C:\> "hello" -match "h?llo"
True
PS C:\> "hello" -match "h*o"
True
PS C:\> "hello" -match "hel+o"
True

Regular Expressions – Character Classes

  • \w matches any word character, meaning letters and numbers.
  • \s matches any white space character, such as tabs, spaces, and so forth.
  • \d matches any digit character.
PS C:\> "Windows Server" -match "\w"
True
PS C:\> "Windows Server" -match "\w\s\w"
True
PS C:\> "Windows Server" -match "\d"
False
PS C:\> "Windows Server 2016" -match "\d"
True

Regular Expressions – Character Groups, Ranges, and Sizes

A regex can also contain groups or ranges of characters, enclosed in square brackets. For example, [aeiou] means that any one of the included characters—a, e, i, o, or u—is an acceptable match. [a-zA-Z] indicates that any letter in the range a-z or A-Z is acceptable

PS C:\> "Windows" -match "Win[def]ows"
True

Creating a regular expression to check IP.

PS C:\> "192.168.0.1" -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
True
PS C:\> "192.168.0.A" -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
False

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on reddit
Share on skype
Share on telegram
Share on whatsapp
Share on email
Share on print

Leave a Reply

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

Post comment