Я пытаюсь создать регулярное выражение .NET, которое будет соответствовать строкам в кавычках в исходном коде VB.NET, но исключая некоторые нежелательные строки, такие как строки в комментариях XML и метки регионов и т. Д.
Вот данныеобразец, представляющий некоторый исходный код VB.NET, который может выполнять Regex:
#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>(?:[^"]|"")*)"
В качестве дополнительной ловкости было бы полезно, если бы регулярное выражение могло полностью игнорировать пустые строки, представленные парой символов кавычек.
Есть предложения, пожалуйста?
Заранее спасибо, Тим