Die Verwendung von regulären Ausdrücken (REGEX) in Powershell kann eine mächtige Möglichkeit sein, um Zeichenfolgen in Skripten zu verarbeiten und zu manipulieren. In diesem Beitrag habe ich einige nützliche Scripts mit Regex Snippets aufgelistet.
IP Adressen
$string = "Dieser String enthält einige IP-Adressen wie beispielsweise 192.168.0.1 und 10.0.0.1."
$regex = "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
[regex]::Matches($string, $regex) | % {
$_.Value
}
<#
Ausgabe
192.168.0.1
10.0.0.1
#>
MAC Adresse
$string = "Dieser String enthält einige MAC-Adressen wie beispielsweise 00:11:22:33:44:55 und 66:77:88:99:AA:BB."
$regex = "\b([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})\b"
[regex]::Matches($string, $regex) | % {
$_.Value
}
<#
Ausgabe
00:11:22:33:44:55
66:77:88:99:AA:BB
#>
E-Mail Adresse
$string="Dieser String enthält einige E-Mail-Adressen wie beispielsweise test@example.com und andere@beispiel.de."
$regex="\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"
[regex]::Matches($string, $regex, "IgnoreCase ") | % {
$_.Value
}
<#
Ausgabe
test@example.com
andere@beispiel.de
#>
ASCII Zeichen von 33 bis 126
$string = "Dieser String enthält einige ASCII-Zeichen von 33 bis 126 wie beispielsweise ÿ õ æ é §"
$regex = "[^ -x7e]"
[regex]::Matches($string, $regex) | % {
[char]$_.Value
}
<#
Ausgabe
ä
ÿ
õ
æ
é
§
#>
Starkes Kennwort
min. 12 Zeichen, Groß- & Kleinbuchstaben, Zahl oder Sonderzeichen
$string = "SuperKennwort12345!"
#$string = "Passwort123"
$regex = "\b(?=.{12,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!\`"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]).*\b"
if([regex]::IsMatch($string, $regex)) {
"Der gegebene String $($string) erfüllt die Kriterien."
} else {
"Der gegebene String $($string) erfüllt nicht die Kriterien."
}
<#
Ausgabe
Der gegebene String SuperKennwort12345! erfüllt die Kriterien.
Der gegebene String Passwort123 erfüllt nicht die Kriterien.
#>
URLs
$string = "Dieser String enthält einige URLs wie beispielsweise https://www.example.com und https://www.beispiel.de."
$regex = "\b(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+[a-z]{2,}\b"
[regex]::Matches($string, $regex) | % {
$_.Value
}
<#
Ausgabe
https://www.example.com
https://www.beispiel.de
#>
Datum
$string = "Dieser String enthält ein Datum im Format TT.MM.JJJJ wie beispielsweise 12.12.2022 oder 01.01.2023"
$regex = "\b(0?[1-9]|[12][0-9]|3[01])[.](0?[1-9]|1[012])[.](19|20)\d\d\b"
[regex]::Matches($string, $regex) | % {
$_.Value
}
<#
Ausgabe
12.12.2022
01.01.2023
#>
Zeit
$string = "Dieser String enthält eine Zeit im Format HH:MM wie beispielsweise 13:45."
$regex = "\b(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]\b"
[regex]::Matches($string, $regex) | % {
$_.Value
}
<#
Ausgabe
13:45
#>