Regex возвращает пропущенное совпадение в .NET - почему? - PullRequest
2 голосов
/ 24 июня 2011

Как видно на скриншоте, capture фиксирует правильное значение Boton \ "Reservar \" , но это свойство, по-видимому, недоступно. Значение возвращает это значение, но экранировано, это не то, что мне нужно.Это нормальное поведение с .NET?Как правило, Значение показывает то же значение, что и строка объекта, но на этот раз оно экранировано.

Также, как вы можете видеть в Немедленном окне, capture.ToString() и даже группа показывает экранированное значение.

Что еще хуже, Значение заключено в кавычки, а это не то, что регулярное выражение должно соответствовать.

Я уже пытался привести capture к Group и вызвать capture.Captures еще раз, чтобы увидеть, скрыто ли настоящее совпадение в более глубоких группах, ноэто не так.

Есть идеи?

enter image description here

1 Ответ

7 голосов
/ 24 июня 2011

Строка в памяти верна - это просто ее представление в текущем окне / watch / locals, которое экранируется. Я не знаю, почему люди из Visual Studio решили сделать это, но одно из возможных объяснений состоит в том, что вы можете скопировать эту строку как есть и вставить в свой код:

var match = "Botón \\\"Reservar\\\"";

И это будет иметь фактическое значение захвата. Если щелкнуть увеличительное стекло рядом со значением свойства «Значение», вы увидите строку без экранирования.

...