Многострочные регулярные выражения в Visual Studio

Есть ли способ заставить Visual Studio выполнять замену регулярных выражений по нескольким строкам (пусть границы границ линии совпадают)? Я знаю, что для этого есть множество редакторов, но мне кажется странным, что эта функция была оставлена ​​вне Visual Studio. Я что-то пропустил?

Ответ 1

Регулярные выражения изменились в Visual Studio 2013. https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx

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

StartOfExpression.*\r?\n.*EndOfExpression

Ответ 2

Это работает сегодня в Visual Studio 2012:

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

Посмотрите, как часть (.*\n)+? выполняет совпадение по нескольким строкам, не жадным.
fooPatternToStart - это некоторый шаблон регулярного выражения в вашей стартовой строке, а barPatternToEnd - ваш шаблон, чтобы найти на другой строке ниже, возможно, много строк ниже...

Пример найдено здесь.

Простой и эффективный:)

Примечание: до VS2012, шаблон, который работал: fooPatternToStart.(.\n)[email protected]*barPatternToEnd

Ответ 3

Примечание. Этот ответ использует синтаксис regex, используемый в Visual Studio вплоть до VS 2012. В VS 2013 и более поздних версиях синтаксис regex был изменен.

Вы можете включить \n в выражение. В качестве примера, это регулярное выражение, которое я использую для "очистки" автоматически сгенерированных SQL-скриптов от всего, что не является хранимой процедурой (оно будет соответствовать текстовым блокам, которые начинаются с строки, содержащей "Object:", за которой следует что-то, что не является "StoredProcedure", то соответствующие строки до строки состоят из слова "GO" ):

/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n

Ответ 4

вам может понадобиться использовать \r\n в конце вашего выражения.