0

我正在尝试获取所有在 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

在这个例子中,我期望找到cxRadioGroup2cxRadioGroup4组件。


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 =

我准备了一个在线示例

4

0 回答 0