У меня есть структурированный файл с иерархическим текстом, который описывает графический интерфейс в Delphi (DFM-файл).Проблема с регулярным выражением: совпадение в контексте
Предположим, у меня есть этот файл, и мне нужно сопоставить все строки «Color = xxx», которые находятся в контексте TmyButton (отмечены), но не в другом контексте. Внутри TMyButton-Context не будет более глубокого иерархического уровня.
object frmMain: TfrmMain
Left = 311
Top = 201
Color = clBtnFace
object MyFirstButton: TMyButton
Left = 555
Top = 301
Color = 16645072 <<<<<<MATCH THIS
OnClick = ButtonClick
end
object MyLabel: TLabel
Left = 362
Top = 224
Caption = 'a Caption'
Color = 16772831
Font.Color = clWindowText
end
object Panel2: TLTPanel
Left = 348
Top = 58
Width = 444
Height = 155
Color = clRed
object MyOtherButton: TMyButton
Left = 555
Top = 301
Color = 16645072 <<<<<<MATCH THIS
OnClick = ButtonClick
end
end
end
Я пробовал его два дня с множеством разных попыток. Вот некоторые из моих неполных частей картины:
/^[ ]{2,}object [A-Za-z0-9]+: TmyButton\r\n/mi <<<Matches the needed context
/^[ ]{4,}Color = [A-Za-z0-9]+\r\n/mi <<<Matches the needed result
/^[ ]{2,}end\r\n/mi <<<Matches the end of the context
(я не знаю, почему, но я должен был использовать «\ г \ п» вместо «$» ...). Мне нужно собрать это вместе, но игнорируя другие строки, кроме других строк «object xxx: yyy» и «end» ....
Я был бы рад помочь!
переменная длина lookbehind: thats, что я пробовал кулак ... Я думаю, что мне нужно сделать некоторые скрипты. Теперь я буду искать сначала для контекста, используя/^ [] {2,} объект \ w +: TMyButton \ r \ n (^ [] {4,}. + \ R \ n) +^[] {2} конец \ r \ n/mi, а затем в этом совпадении найдите/^ [] {4,} Цвет = \ w + \ r \ n/mi –