theunreal
Goto Top

Regex (Wert)UND(andererWert) verketten

Hallo zusammen,

ich hoffe der Titel ist einigermaßen gewählt face-smile.

Ich habe eine Frage zum REGEX verhalten. Ich durchsuche folgenden String:

:data
Hier ist ein Karton
Dong!
data:

Ich möchte nun in einer if-Abfrage prüfen, ob ein Match true ist:

if ($CheckedString -Match "(data:)?(:data)?" -eq $true)...  

Der Code matched immer, da er alles matched, eine ODER Verknüpfung bekomme ich ja mit dem Pipe hin, aber die matched dann ja auch, wenn nur ein "data" vorhanden ist.Wie sieht es mit einer und Verknüpfung aus? Gibt es das überhaupt?
Match darf nur true sein, wenn beide "data´s" vorhanden sind.

Sonst bastel ich das aus 2 if-Abfragen, aber mir wäre es lieber kompakter face-smile.

Ich hoffe mein Anliegen war verstänlich vorgetragen.
Liebe Grüße,
Sascha

Content-Key: 649662

Url: https://administrator.de/contentid/649662

Printed on: April 19, 2024 at 18:04 o'clock

Mitglied: 147323
Solution 147323 Feb 09, 2021 updated at 09:37:18 (UTC)
Goto Top
Match darf nur true sein, wenn beide "data´s" vorhanden sind.
Da gibt's mehrere Varianten z.B. einfach mit -and Operator verketten:
if($checkedString -match ':data' -and $checkedString -match 'data:'){  
 "OK"  
}
oder wenn du es in einem einzigen Regex haben willst und die Reihenfolge der Terme egal sein soll
if($checkedString -match '(?s)(:data.*data:|data:.*:data))'){  
 "OK"  
}
Sonst bastel ich das aus 2 if-Abfragen
Nee das ist nun wirklich nicht nötig. Solltest du vielleicht mal in einer ruhigen Minute lesen about_Logical_Operators
Member: TheUnreal
TheUnreal Feb 09, 2021 at 09:51:39 (UTC)
Goto Top
Super, vielen Dank für die Hilfe. Auf die Gruppe mit dem Sonderzeichen am Anfang wäre ich alleine nicht gekommen.

Gruß Sascha
Mitglied: 147323
Solution 147323 Feb 09, 2021 updated at 10:01:23 (UTC)
Goto Top
Zitat von @TheUnreal:

Super, vielen Dank für die Hilfe. Auf die Gruppe mit dem Sonderzeichen am Anfang wäre ich alleine nicht gekommen.
Das ist effektiv keine Gruppe sondern es ist ein spezieller Regex Konstrukt das besagt das der Punkt im Regex auch Zeilenumbrüche matchen soll (s) )
z.B. besagt
(?ism)
das insensitiv (i) gematcht werden soll, zusätzlich der Punkt auch Zeilenumbrüche matcht (s) und das (m) besagt das ^und $ im Regex Zeilenanfang und Zeilenende jeder Zeile matchen (multiline match) anstatt nur Anfang oder Ende des Strings.