Kinook Software Forum

Go Back   Kinook Software Forum > Visual Build Professional > [VBP] General Discussion
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 09-27-2004, 04:14 PM
MHolmes MHolmes is online now
Registered User
 
Join Date: 09-27-2004
Location: Houston, TX
Posts: 6
Question Passing regex match to a script function

In a Replace Files step, I need to pass the result of a regex match. Basically, I need to match a filename in a file using the following regex:

Code:
^.*"OutputFilename"\s*=\s*"(.*)".*$
I capture the complete path specified, but I want to get JUST the filename part (so if it's C:\My Files\somefile.txt, I want somefile.txt) so that I can mutate the final output path at build time. I have a project level function called GetFileNamePart which uses the FSO to return the filename, but I can't call it as:

Code:
[GetFileNamePart($1)]
In the replace text. I know that regexp normally uses backreferences for that, but how can I get a match and pass it to a script function?
Reply With Quote
  #2  
Old 09-29-2004, 12:03 PM
kevina kevina is online now
Registered User
 
Join Date: 03-27-2003
Posts: 825
Unfortunately you can't do exactly what you are wanting (pass a matched expression to script), but you can accomplish what you are trying to do with just a regular expression.

Below is an example Replace In File step that uses a different regular expression that does what I think you are trying to do.

<step action='Replace in File' type='0'>
<FileIn>c:\temp\test.txt</FileIn>
<FileOut>c:\temp\output.txt</FileOut>
<Find>(^[[^\n"]]*"OutputFilename"\s*=\s*)"(([[^\n\\"]]*\\)*)([[^"\n]]*)[["\n]]</Find>
<Replace>$1"(?3$4)"</Replace>
<indent type='3'>1</indent>
<name>Replace Full Path with filename only</name>
</step>

Note: Please note that using .* is not a very safe thing to do with regular expressions in Visual Build Pro because it doesn't function in a 'line mode'. .* is greedy in Visual Build Pro which can consume line feeds. The sample regular expression above adheres to the advice in the help file for Replace In File Action using [^\n]* instead of .*.

Note 2: Just copy the above xml fragment and paste into Visual Build Pro. A Replace In File step will be created for you to review/use.

Last edited by kevina; 09-29-2004 at 12:05 PM.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



All times are GMT -5. The time now is 02:27 AM.


Copyright © 1999-2023 Kinook Software, Inc.