RegularExpressions Help (unusual request)

Wentu

Member
Joined
Feb 4, 2004
Messages
7
Hi !

heres a real pain in the RegEx that is taunting me in some way.
What i need is, convert this couple of line (written here in their general form):

Me.VARIABLENAME.Location = New System.Drawing.Point(COORDINATEX, COORDINATEY)

*****zero or more possible other lines of code like "Me.VARIABLENAME.SOMETHINGELSE...BLABLABLA"

Me.VARIABLENAME.Size = New System.Drawing.Size(WIDTH, HEIGHT)




in something like

Me.VARIABLENAME.Bounds = New System.Drawing.Rectangle(COORDINATEX, COORDINATEY,WIDTH, HEIGHT)

I use the regex of .NET framework and the replace function. The Regex i found is:


Me\.([a-zA-Z_][_a-zA-Z0-9]*)\.Location = New System\.Drawing\.Point\(([^,]+,[^,]+)\)((.*\n)*)[ \t]*Me\.\1\.Size = New

System\.Drawing\.Size\(([^,]+,[^,]+)\)

and the possible replacement is:

Me.$1.Bounds = New System.Drawing.Rectangle($2,$5)$3


it almost always works, with 0 or more lines in the middle. Notice that $3 should put all that is inside the two lines,

immediately after the last parenthesis in the resulting string.

It happens, rarely, something like this: the $3 is placed randomly after a certain number of line, like in the following

examlple:


***************************************


dgIncassi

Me.dgIncassi.Location = New System.Drawing.Point(0, 26)
Me.dgIncassi.Size = New System.Drawing.Size(238, 220)

TB

Me.TB.Buttons.Add(Me.tbCmdExit)
Me.TB.ImageList = Me.IM

tbCmdExit

Me.tbCmdExit.ImageIndex = 0

IM

Me.IM.Images.Add(CType(resources.GetObject("resource"), System.Drawing.Image))
Me.IM.ImageSize = New System.Drawing.Size(16, 16)


************************************

is converted in:

************************************


dgIncassi

Me.dgIncassi.Bounds = New System.Drawing.Rectangle(0, 26,238, 220)

TB

Me.TB.Buttons.Add(Me.tbCmdExit)
Me.TB.ImageList = Me.IM

tbCmdExit

Me.tbCmdExit.ImageIndex = 0

IM

Me.IM.Images.Add(CType(resources.GetObject("resource")
, System.Drawing.Image))
Me.IM.ImageSize = New System.Drawing.Size(16, 16)

**********************************



what is amazing is that in this case $3 is a carriage return and it is placed in the line beginning with Me.IM.Images.Add
The string ", System.Drawing.Image))" comes out actually in a new line but it should follow the line before.
Since this is VB.nET code, i cant afford a carriage return !!

Could anyone explain me why in this particular case the $3 is placed not immediately at the end of the regex but some lines later ??

Thankx so much !!

Wentu
 
Back
Top