2017-01-25 2 views
1

Es scheint einfach, aber es ist mir nicht gelungen, dies zu tun.Regex Substitution in Visual Studio 2015

smartPtr(className) =>smartPtr<className>

+0

es funktioniert gut für mich !!! –

+1

Verwenden Sie eine literale String-Substitution, deaktivieren Sie den Regex-Modus. –

+0

@ WiktorStribiżew müssen den Ersatz in der gesamten Lösung tun. Es hat mehr als 100 Klassen, die mit smartPtr() umschlossen sind. – user2391685

Antwort

1

In Visual Studio, aktivieren Sie die Suche und ersetzen regex Modus eine Regex-basierten Suche und ersetzen Sie den ersten Einsatz.

Dann müssen Sie die Klammern entkommen wörtlichen übereinstimmen ( und ), und verwenden Sie [^)]+ 1+ andere Zeichen als ) anstelle der className (oder \w+ entsprechen 1+ Buchstaben/Ziffern/_) mit einem eingewickelt übereinstimmen Erfassungsgruppe (ein Paar von unescaped Klammern):

smartPtr\(([^)]+)\) 

oder

smartPtr\((\w+)\) 

und repla ce mit smartPtr<$1>.

Siehe eine .NET regex demo online.

HINWEIS: smartPtr() als ganzes Wort entsprechen, können Sie das Muster mit einer Wortgrenze, \bsmartPtr\((\w+)\) oder sogar eine Leerzeichen Grenze Zierer (?<!\S)smartPtr\((\w+)\).

+0

className ist ein generischer Begriff. Ich muss SmartPtr (Klasse A), SmartPtr (Klasse B) und usw. in der Lösung ersetzen – user2391685