C ++ Backsla sh escape-символ не преобразуется в Visual Studio 2017 Professional - PullRequest
0 голосов
/ 17 марта 2020

У меня есть Visual Studio 2017 Professional. Я пытаюсь очень просто загрузить строковую переменную в C ++ с шаблоном регулярных выражений, который содержит обратную косую черту:

\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

В качестве тестового регулярного выражения для функции. Регулярное выражение взято из здесь , предназначенное для извлечения IP-адресов из любого фрагмента текста.

Если я вставлю шаблон регулярного выражения в том виде, как он есть (то есть - одна обратная точка sh) строковой переменной не будет обратной косой черты

Однако, если я добавлю еще одну обратную косую черту sh, как вы и предполагали, строковое значение будет иметь две обратной косой черты:

enter image description here

Этого не происходит в Eclipse. Почему это происходит?

1 Ответ

1 голос
/ 17 марта 2020

Отладчик Visual Studio показывает специальные символы в качестве escape-последовательностей (для возможности отображения \ n, например, отображения большого текста в одну строку). Обратите внимание, что рядом с записями строк есть маленький значок увеличительного стекла. Если вы нажмете на нее, VS откроет новое окно, где будет отображаться неэкранированный (и, возможно, многострочный) текст.

Кстати, вам также нужно экранировать \ b в строке регулярного выражения, даже если она не вызывает предупреждений (\ b - специальный символ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...