我正在尝试获取所有在 Delphi DFM 文件中TcxRadioGroup
没有属性值的类。Caption
我必须在一个包含数千种表格的大型 groupproject 中执行此操作。出于这个原因,我正在寻找一种可以处理多个文件的解决方案(我想在Notepad++中使用RegEx ,但我愿意接受任何其他解决方案)
例子:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 494
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object cxRadioGroup1: TcxRadioGroup
Left = 0
Top = 0
Align = alTop
Caption = 'cxRadioGroup1'
Properties.Items = <>
TabOrder = 0
ExplicitLeft = 24
ExplicitTop = 16
ExplicitWidth = 185
Height = 105
Width = 635
end
object cxRadioGroup2: TcxRadioGroup
Left = 0
Top = 389
Align = alBottom
Properties.Items = <>
TabOrder = 1
ExplicitTop = 293
Height = 105
Width = 635
end
object Panel1: TPanel
Left = 200
Top = 111
Width = 257
Height = 265
Caption = 'Panel1'
TabOrder = 2
object cxRadioGroup3: TcxRadioGroup
Left = 8
Top = 16
Caption = 'cxRadioGroup3'
Properties.Items = <>
TabOrder = 0
Height = 105
Width = 185
end
object cxRadioGroup4: TcxRadioGroup
Left = 8
Top = 144
Properties.Items = <
item
Caption = 'item 1'
end
item
Caption = 'item 2'
end>
TabOrder = 1
Height = 105
Width = 185
end
end
end
在这个例子中,我期望找到cxRadioGroup2
和cxRadioGroup4
组件。
1°尝试:
我尝试使用正则表达式,但我不知道如何找到没有该Caption
行的出现...使用 Notepad++,我开始尝试捕获每个TcxRadioGroup
块直到它们的end
行(end
具有相同的行缩进)。
^\s*object\s(\w*):\sTcxRadioGroup.*end
有选项/gms
它从文件object cxRadioGroup1
的最后一个捕获end
2°尝试:
为了匹配每个组件声明的正确性,我使用了惰性匹配并重用了捕获的空格。end
^(\s*)object\s(\w*):\sTcxRadioGroup.*?\n\1end
有选项/gms
它找到所有TcxRadioGroup
声明,每一个声明都从头到尾。我想我应该找到一种方法来排除那些包含\1 Caption =
我准备了一个在线示例。