Regex для соответствия всему классу vb. net в файле с несколькими классами - PullRequest
0 голосов
/ 07 мая 2020

У меня есть файл, содержащий несколько классов vb. net, например:

Public Class AddressVerification

    Public SingleAddress As Boolean

    Public Addresses as List(Of Address)

    Public Sub New()

    End Sub

End Class

Public Class Address

    Public ClientId as String

    Public City as String

    Public Zip as String

End Class

Я хочу создать регулярное выражение, чтобы захватить весь класс AddressVerification, и я попробовал регулярное выражение:

(\bPublic Class AddressVerification\b)|(\bEnd Class\b)

Глобальные и многострочные флаги включены по умолчанию, а образец можно найти по адресу https://regex101.com/r/XQVp5v/2. Как я могу захватить всю AddressVerification? (рисунок ниже)

enter image description here

1 Ответ

1 голос
/ 08 мая 2020

Если поддерживается отрицательный просмотр вперед, вы можете сопоставить все следующие строки, которые не начинаются с Конечный класс

^Public Class AddressVerification(?:\r?\n(?!End Class\b).*)*\r?\nEnd Class\b

Объяснение

  • ^ Начало строки
  • Public Class AddressVerification Буквальное соответствие
  • (?: Группа без захвата
    • \r?\n(?!End Class\b) Сопоставьте новую строку и подтвердите, что прямо справа не Конечный класс
    • .* Соответствует всей строке
  • )* Закройте группу без захвата и повторите 0 + раз
  • \r?\nEnd Class\b Соответствует новой строке, за которой следует Конечный класс

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...