«Сгруппированное выражение отсутствует»), за исключением того, что это не - PullRequest
2 голосов
/ 02 сентября 2011

Используя диалог поиска VS2010, я использую следующее регулярное выражение: (?'outer'^div\#.+) input$.

Я пытаюсь создать именованную группу "external" с содержимым div#someId из div#someId input (в данном случае someId соответствует .+)

Тем не менее, Visual Studio представляет диалоговое окно: Grouped expression is missing ')'.

Однако, ) находится после +. Что я убегаю или не могу сбежать?

EDIT:

Мне не обязательно использовать именованные группы, мне просто нужно иметь возможность использовать div#someId вместо, чтобы добавить другой селектор.

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Похоже, что Visual Studio для поиска и замены использует скобки { }, а не круглые скобки ( ) для обратных ссылок и именованных ссылок.


Поскольку кто-то может обнаружить, что это пытается использовать обратные ссылки / именованная группировка в Поиске и замене в Visual Studio, вот пример их использования:

заменить

div#someId input

с

div#someId input,
div#someId textarea

Найдите: {^div\#.+ }input и замените на: \0,\n\1textarea

Он поместит div#someId (с пробелом, который соответствует ^div\#.+ в первую обратную ссылку.

Создание строки замены с обратной ссылкой:
Затем замена заменит всю строку: \0

div#someId input

затем запятая: ,

div#someId input,

затем новая строка: \n

div#someId input,
 

затем первая группа: \1

div#someId input,
div#someId 

затем данный текст: textarea

div#someId input,
div#someId textarea

В целом делает замену строки \0,\n\1textarea

Обновление: На основании этого MSDN-вопрос в обратных ссылках VS2012 осуществляется доступ с использованием $n, а не \n, поэтому строка замены будет: $0,\n$1textarea

1 голос
/ 02 сентября 2011

Вы должны использовать встроенную функцию замены инструментов Power Tools, которая использует стандартные .Net регулярные выражения

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