2010-10-26 8 views
7

Ich mache einige Ersetzungen in einigen großen SSIS-Paketen, um Änderungen in Tabellen- und Spaltennamen widerzuspiegeln.Regex - Kombination von positivem und negativem Lookbehind

Einige der Tabellen haben Spaltennamen, die mit den Tabellennamen identisch sind, und ich muss den Spaltennamen ohne Übereinstimmung mit dem Tabellennamen abgleichen.

Also, was ich brauche, ist ein Weg, MyName in [MyName] passen aber nicht in [dbo].[MyName]

(?<=\[)(MyName)(?=\]) Matches beiden, und ich dachte, dass (?<!\[dbo\]\.)(?<=\[)(MyName)(?=\]) den Trick tun würde, aber es scheint nicht zu funktionieren.

/Smoller

+0

Haben Sie darüber nachgedacht Xslt oder LINQ to XML? – Kobi

Antwort

6

Sie benötigen die Öffnung eckige Klammer in der ersten Lookbehind enthalten:

(?<!\[dbo\]\.\[)(?<=\[)(MyName)(?=\])