none
Match-Operator: seltsames Verhalten RRS feed

  • Frage

  • Hallo,

    ich bin auf ein etwas seltsames Verhalten des Match-Operators gestoßen: der Match-Operator liefert unter Umständen "false", auch wenn beide Operanden identisch sind. Ich erwarte, dass der Match-Operator immer "true" liefert, wenn beide Operanden identisch sind.

    Auszug aus einer Powershell-Session:

    PS C:\Users> $x = "Ich"
    PS C:\Users> $y = $x
    PS C:\Users> $x -eq $y
    True

    PS C:\Users> $x -match $y
    True

    PS C:\Users> $y -match $x
    True

    PS C:\Users> $x = "Ich + Ich"
    PS C:\Users> $y = $x
    PS C:\Users> "$x" -eq "$y"
    True

    PS C:\Users> "$x" -match "$y"
    False

    PS C:\Users> "$y" -match "$x"
    False

    PS C:\Users> "$x" -match "$x"
    False

    Bei den letzten 3 Statements habe ich "True" erwartet. Offenbar scheint ein "+" im String das Verhalten zu beeinflussen. Meiner Meinung nach ist das ein Bug. Was ist eure Meinung dazu?

    Samstag, 12. Januar 2013 19:26

Antworten

  • Hi,

    -match ist ja der Vergleichsoperator für Regular Expressions. In einer RegEx hat + eine besondere Bedeutung. Links von -match ist der String, den du mit der RegEx Rechts von Match abgleichst. Wenn du also in der RegEx das + 'escapest', klappt der Vergleich:

    "Ich + Ich" -match "Ich \+ Ich"

    Gruss

    Bastian

    • Als Antwort vorgeschlagen Peter Kriegel Montag, 14. Januar 2013 06:23
    • Als Antwort markiert Alex Pitulice Dienstag, 15. Januar 2013 07:39
    Samstag, 12. Januar 2013 22:33