0

I need to do some global changes to a number of spreadsheets and I think the best way is to use regular expressions so I have added a reference to Microsoft VBScript Regular Expression type library and can now process regular expressions. I am using a function with the following signature:

RegExpSubstitute ( target as string, searchREGEX as string, replaceREGEX as string) as string

I have a number of cells with contents like this:

'ALBERTS1:XLRI_CHEM_CHEMICAL_1' * 'Albert_Chemicals_SG_Lime' * 'Albert_Chemicals_Conc_Lime' * 'Albert_Lime_price' / 1000

All the stuff starting "'Albert_" need to be changed to "'ALBERTS1-" and all the other underscores in that symbol need to be changed to dashes. The first part I can do with:

new = RegExpSubstitute(old, "(')([^-:_ ]+)(_)([^']*)(')", "$1" & scadaPrefix & "-$4$5")

but that only replaces the first '_' with '-' and I need to do all the others in that symbol. The first symbol, starting with "'ALBERTS1:" should not be changed.

At the moment, I am thinking that the best thing to do is split the string into symbols on the space character and then process each symbol separately, but can I do the whole thing in one search & replace?

1 Answer 1

1

Sorry, no, you could only do that with a regex engine that supports infinite-length-lookbehind, and ECMAScript engines don't do that.

You'll have to process each entry separately, and if it starts with Albert_, then do the replacements on it.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.