Czy istnieje sposób, aby program Visual Studio wykonał zamianę wyrażenia regularnego w wielu wierszach (pozwól dopasować granice między wierszami)? Wiem, że jest wiele edytorów, których mogę do tego użyć, ale wydaje się dziwne, że ta funkcja została pominięta w programie Visual Studio. Czy coś mi brakuje?
źródło
end
), więc nie jest chciwy. tj .:start(.*\n)*.*?end
start
aend
. Jeśli chcesz znaleźć następną,end
użyj niechcianej wersji:,(?s)start.*?end
lubstart(.*\n)*?.*?end
.(?s)
?Wyrażenia regularne uległy zmianie w programie Visual Studio 2013 . https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx
Aby dopasować wyrażenie w dwóch wierszach, kod wyglądałby teraz:
StartOfExpression.*\r?\n.*EndOfExpression
źródło
</label>.*\r?\n.*<div
gdzie\r?\n
jest oczywista carriage_return-new_line i.*
za dopasowanie możliwych tabulatorów / spacjiDziała to dzisiaj w programie Visual Studio 2012:
fooPatternToStart.*(.*\n)+?.*barPatternToEnd
Zobacz, jak
(.*\n)+?
część pasuje do wielu linii, nie jest chciwa.fooPatternToStart
to jakiś wzorzec wyrażenia regularnego w linii początkowej, abarPatternToEnd
wzór do znalezienia w innym wierszu poniżej, prawdopodobnie w wielu wierszach poniżej ...Przykład znaleziony tutaj .
Prosty i skuteczny :)
Uwaga: przed VS2012 działał wzór:
fooPatternToStart.(.\n)+@.*barPatternToEnd
źródło
sprintf.*(.*\n)+?.*log.*(.*\n)+?.*__func__
wyszukujelog
międzysprintf
i__func__
, dzięki! Jednak… wydaje się, że patrzy w nieskończoność… gdyby tylko istniał sposób na ograniczenie liczby liniiUwaga: ta odpowiedź używa składni wyrażenia regularnego używanej w programie Visual Studio do wersji VS 2012 włącznie. W wersji VS 2013 i nowszych składnia wyrażenia regularnego uległa zmianie.
Możesz uwzględnić
\n
w wyrażeniu. Jako przykład, tutaj jest wyrażenie regularne, którego używam do „czyszczenia” automatycznie generowanych skryptów SQL z wszystkiego, co nie jest procedurą składowaną (dopasuje bloki tekstowe rozpoczynające się wierszem zawierającym „Obiekt:”, po którym następuje coś, co nie jest „StoredProcedure”, a następnie dopasowywanie następujących wierszy do wiersza składa się ze słowa „GO”):/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n
źródło
może być konieczne użycie \ r \ n na końcu wyrażenia.
źródło
Non-chciwy wielowierszowy przechwytywanie dowolnego znaku, Visual Studio 2013+:
.*?\r?\n.*?
Wersja chciwa w odpowiedzi Gilesa Robertsa.
źródło
Dla wszystkich, którzy szukają VS Code, używam tego, aby dopasować wszystko z
script
dowolnego miejsca z 2 nowymi wierszami (z wyłączeniem nowych linii):script(.|\n)+?(?=\n\n)
zastąpić
script
i\n\n
dopasować wszystko między nimi.źródło