Есть ли способ заставить 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 в конце вашего выражения.