1

Я пытаюсь найти все с помощью операторов, которые находятся в файлах cs, которые содержат ссылку на класс в любом месте в файле, следующем за ним.Как найти с lookahead в Visual Studio 2012 Regex Найти и заменить

Например, я хочу соответствовать using Example.Foo;, если BaseClass<SomeClass> находится в любом месте файла, следующего за ним.

Как например:

enter image description here

Я попытался (using Example.Foo;)(?=[.\s\n]*BaseClass\<SomeClass\>[.\s\n]*), но не радость ...

UPDATE

Для ясности, это для VS 2012 IDE Найти и заменить диалог.

+1

попробуйте этот шаблон '(? S) (? =. * BaseClass ) используя \ sExample \ .Foo;' –

+0

@ 491243, это тоже не сработало ... – Jim

ответ

0

я понял это сам.

(?s)using Example\.Foo;(?=(.*|\s\r)BaseClass\<SomeClass\>(.*|\s\r)) 

Это трюк!

Спасибо за (?s) Подсказка, это было необходимо! +1 для этого ...

+0

Вам не нужно скрывать угловые скобки. Они не являются операторами регулярных выражений. – Nashenas

+1

@Nashenas похоже, что они находятся в Visual Studio. Например: '(? dog | cat)' находит собаку или кошку и заменяет ее домашним животным. – ToastyMallows

+0

Я забыл о названных захватах = /. – Nashenas

1

Вам необходимо добавить (? S), который позволяет выполнять многострочное сопоставление, а также избежать периода в using Example.Foo. Регулярное выражение должно быть что-то вдоль линий:

(?s)using Example\.Foo;(?=.*BaseClass<SomeClass>)

+0

Что didn Работает, это для диалога поиска и замены VS 2012 (с включенным RegEx)? – Jim