C# - Sa 11.04.15 14:39
Titel: (C#6) Regex pattern + Stringinterpolation = ?!?!?!?
Hey @ll,
ich code momentan in VS 2015 mit der C# 6 Preview. Kann es sein, dass sich Regex und Stringinterpolation nicht vertragen?
Wenn ich so prüfe, erhalte ich
true:
C#-Quelltext
1:
| Regex.IsMatch(text, @"\[" + Consts.REGEX_ALLOWED_NAME + @"\]") |
aber so erhalte ich
false:
C#-Quelltext
1:
| Regex.IsMatch(text, @"\[\{Consts.REGEX_ALLOWED_NAME}\]") |
Ich vermute, das liegt an dem @. Dadurch erkennt er \{ nicht als Escapesequenz sondern als einfachen string, stimmts?
Kann man da mogeln, dass es trotzdem mit Stringinterpolation geht, oder muss ich bei meinem workaround bleiben?
jfheins - Sa 11.04.15 15:35
Das mit dem @ ist eben ein verbatim-string - es gibt keine Escapesequenzen außer "" für quote. Das ist nicht nur praktisch für Regex, sondern z.B. auch für Pfade in denen Backslashes vorkommen.
Du kannst natürlich immer noch reguläre Literale verwenden, wenn du die passenden Zeichen (hier die Backslashes) escapest. Ungefähr so:
C#-Quelltext
1:
| Regex.IsMatch(text, "\\[\{Consts.REGEX_ALLOWED_NAME}\\]") |