Private/Wissen/X_Technology/X02_RegularExpression.ps1
<#
# Regular Expression Regular Expression (RegEx) zu deutsch Reguläre Ausdrücke. - **Hashtags** RegEx Regular Expression - **Version** 2021.7.5 #> # TODO Weiterführende und Nachschlage-Informationen Get-Help -Name 'about_regular_expressions' -ShowWindow Get-Help -Name 'about_Comparison_Operators' -ShowWindow Get-Help -Name 'about_Operators' -ShowWindow Start-Process -FilePath 'https://docs.microsoft.com/de-de/dotnet/standard/base-types/regular-expression-language-quick-reference' # Sprachelemente für reguläre Ausdrücke – Kurzübersicht <# ? Kurzübersicht der gängigsten Kürzel Handout: https://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf ! PLATZHALTER BESCHREIBUNG . Alle Zeichen, ausgenommen dem Zeilenumbruch [^abc] Alle Zeichen, ausgenommen abc [^a-z] Alle Zeichen, ausgenommen a bis z [abc] Die Zeichen abc [a-z] Alle Zeichen von a-z \d Jede Ziffer von 0 bis 9 \D Jedes Zeichen ausgenommen Ziffern von 0-9 \f Zeilenvorschub (Form Feed, ASCII 12) \n Zeilenumbruch (Line break) \r Wagenrücklauf (Carriage return) \s Jeglicher Leerraum (whitespace => space, tab, new line) \S Jeglicher NICHT Leerraum \t Tabulator ... Und viele mehr.... ! QUANTIFIZIERER BESCHREIBUNG * Mindestvorkommen = 0 , Maximalvorkommen = unendlich + Mindestvorkommen = 1 , Maximalvorkommen = unendlich ? Mindestvorkommen = 0 , Maximalvorkommen = 1 {n,} Mindestvorkommen = n , Maximalvorkommen = unendlich {n,m} Mindestvorkommen = n , Maximalvorkommen = m {n} Mindestvorkommen = n , Maximalvorkommen = n ... Und viele mehr.... ! SONSTIGES BESCHREIBUNG ^ Start des Textes \A $ End des Textes \z (?:) Bildet eine Gruppe ... Und viele mehr.... #> # ? EMail Adresse validieren $string = 'info@attilakrick.com' $regex = "\A(?<Email>[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\z" if ($string -iMatch $regex) { $email = [System.Net.Mail.MailAddress]::new($Matches.EMail, 'Attila Krick') # $Matches[0] } # HINWEIS: $Matches enthält immer die Auswertung der letzten RegEx-Operation. # TIPP - Zuerst im Internet nach Ausdrücken suchen z.B.: regex email # TIPP - Für Eigenentwicklungen z.B. Testen und Entwickeln mit https://regex101.com/ # ? IPv4 Adresse validieren $string = 'Meine IPv4-Adresse ist: 192.168.178.3 Stand: 31.8.2020' $regex='(?<IPv4Address>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))' If ($string -cMatch $regex) { [IPAddress]$Matches.IPv4Address } # ? TAB in ; umwandeln (Replace-Operatoren unterstützt RegEx) @" Wert1 Wert2 Wert3 "@ -Replace '[\t]', ';' # ? Select-String Get-Item -Path c:\test.txt | Select-String -Pattern '^a[0-9]+' # ? Teil-String über Gruppennamen finden $text = 'The problem was discussed in KB552356. Mail feedback to admin@powershell.org' $text -iMatch '(?<kb>KB\d{4,6}).* (?<email>[a-z@\.]{7,50})' | Out-Null $Matches.kb $Matches.email |