次のようにスキャンするテキストがあります。
-- FIRST BLOCK
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG44_CLIFOR"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 8
End
-- SECOND BLOCK
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG44_CLIFOR"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 6
End
-- THIRD BLOCK
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG16_ANAG"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 6
End
( ) のブロックのみを一致させたいMaxWidth=6
。
私はいくつかのテストを行っていますが、何かが間違っています...たとえば、次の正規表現を使用しています:
(Begin[\s\S]+?(MaxWidth.*=)[\s\S]+?End)
上記のコードに表示されているツリー ブロックを正しく一致させています。
次に、「MaxWidth」プロパティの値が「6」のブロックのみに一致するように regEx を変更しようとすると、次のようになります。
(Begin[\s\S]+?(MaxWidth.*= 6)[\s\S]+?End)
私は 2 つのブロックだけを正しく一致させましたが、最初のブロックは間違っています。最初の試合:
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG44_CLIFOR"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 8
End
-- SECOND BLOCK
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG44_CLIFOR"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 6
End
最初の 'Begin' で始まり、2 番目のブロックの正しいプロパティ値で終了します。それは間違っている。
( MaxWidth=6
) が各 Begin...End ブロック内で一致するようにします。このようなもの(上記の私のコードを参照):
最初の試合:
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG44_CLIFOR"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 6
End
2 番目の一致:
Begin PRJFW_EDITM.TXT_EDITM TXT_CLIFOR
Height = 300
Left = 2685
DBField = "CG16_ANAG"
Caption = "Codice cliente fornitore"
Object.Tag = "Codice cliente fornitore"
MaxWidth = 6
End
どうやってやるの?私の正規表現で何が問題になっていますか?
ありがとうございました。