Поиск и замена на регулярные выражения, включая lookbehinds, не работает в VS2017 - PullRequest
0 голосов
/ 02 ноября 2018

В Visual Studio 2017 я пытаюсь перевернуть несколько строк следующим образом:

[AddressId] [int] NOT NULL,
[CountryId] [int] NULL,
[POBoxCountryId] [int] NULL,
[Name] [nvarchar] (100) NULL,

в это:

[AddressId] int NOT NULL,
[CountryId] int NULL,
[POBoxCountryId] int NULL,
[Name] nvarchar (100) NULL,

Мне кажется, что регулярное выражение: (?<=\[\w+\]\s)\[(\w+)\] должно точно соответствовать вторым парам скобок и захватывать то, что внутри.

И, похоже, это действительно тот случай, когда я проверяю это в RegexStorm: regexstorm link

Кроме того, в Visual Studio я вижу, что он также правильно найден, если я выполняю find . Строки, где есть совпадение, отображаются.


Однако, если я попытаюсь найти и заменить (заменить на $1), замена не будет выполнена. (замена работает в regexStorm)

Что я делаю не так?

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете использовать

Найти что : (\[\w+]\s+)\[(\w+)]
Заменить на : $1$2

См. Демонстрационную версию regex

Детали

  • (\[\w+]\s+) - Группа 1 ($1): [, 1+ слов, ] и 1+ пробелов
  • \[ - [ char
  • (\w+) - группа 2 ($2): 1+ слов символов
  • ] - ] char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...