Я пытаюсь создать регулярное выражение .NET, которое будет соответствовать строкам в кавычках в исходном коде VB.NET, но исключая некоторые нежелательные строки, такие как строки в комментариях XML, метки регионов и т. д.
Вот образец данных, представляющий некоторый исходный код VB.NET, для которого может выполняться регулярное выражение:
#Region "Class Constructors"
''' <summary>
''' Initializes a new instance of the <see cref="MyClass" /> class.
''' </summary>
Public Sub New()
Debug.WriteLine("This string should be matched by the Regex")
End Sub
#End Region
Regex должен соответствовать строке в кавычках в вызове метода Debug.WriteLine
, но должен игнорировать строку в метке региона и комментарий XML. Он также должен поддерживать синтаксис экранирования кавычек VB.NET, который использует две последовательные двойные кавычки для представления встроенного (экранированного) символа кавычки:
"This is a string containing an escaped quote "" character"
В качестве отправной точки я поэкспериментировал со следующим регулярным выражением, но отрицательный просмотр назад заставляет его сопоставлять последующие закрывающие кавычки, как если бы они были открывающими кавычками.
(?<!Region\s+)"(?<Literal>(?:[^"]|"")*)"
В качестве дополнительной тонкости было бы полезно, если бы регулярное выражение могло полностью игнорировать пустые строки, представленные парой символов кавычек.
Любые предложения, пожалуйста?
Заранее спасибо, Тим