ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Regular Expression Conditionals (?(if)then|else) in VBA? (https://www.excelbanter.com/excel-programming/418261-regular-expression-conditionals-if-then%7Celse-vba.html)

Lazzaroni

Regular Expression Conditionals (?(if)then|else) in VBA?
 
Does the VBScript_RegExp_55.RegExp object support conditionals?

According to http://www.regular-expressions.info/refflavors.html .NET allows
for conditionals using the (?(if)then|else) structure, and I thought that the
VBScript RegExp object used the .NET flavor of RegEx. But when I try to use
it, the object returns an error message.

When I try to do the following:
objRegExp.Pattern = €œ^(<)?test(?(1)|)$€
I get the following error message:
Method 'Test' of object 'IRegExp2' failed

I am trying to use RegEx conditionals to ensure that a string with an
opening bracket has a closing bracket. So the RegEx above would accept €œtest€
or €œ<test€, but it would not accept €œ<test€ or €œtest€.

I have looked all over for documentation on the VBScript=RegExp_55.RegExp
flavor of RegEx, but have had little success.

Any help would be greatly appreciated.

Thank you.

Lazzaroni

Regular Expression Conditionals (?(if)then|else) in VBA?
 
http://msdn.microsoft.com/en-us/libr...1x(VS.85).aspx

That's a link to the Regular Expression Syntax for VBScript. It appears that
conditionals are not supported.

Too bad. That would have been incredibly useful.

Ron Rosenfeld

Regular Expression Conditionals (?(if)then|else) in VBA?
 
On Wed, 8 Oct 2008 08:46:31 -0700, Lazzaroni
wrote:

Does the VBScript_RegExp_55.RegExp object support conditionals?

According to http://www.regular-expressions.info/refflavors.html .NET allows
for conditionals using the (?(if)then|else) structure, and I thought that the
VBScript RegExp object used the .NET flavor of RegEx. But when I try to use
it, the object returns an error message.

When I try to do the following:
objRegExp.Pattern = “^(<)?test(?(1)|)$”
I get the following error message:
Method 'Test' of object 'IRegExp2' failed

I am trying to use RegEx conditionals to ensure that a string with an
opening bracket has a closing bracket. So the RegEx above would accept “test”
or “<test”, but it would not accept “<test” or “test”.

I have looked all over for documentation on the VBScript=RegExp_55.RegExp
flavor of RegEx, but have had little success.

Any help would be greatly appreciated.

Thank you.


The VBScript regex object uses the Javascript flavor.
--ron

Rick Rothstein

Regular Expression Conditionals (?(if)then|else) in VBA?
 
Without using regular expressions, does this do what you want?

If Variable Like "[!<]*[!]" or Variable Like "<*" Then

--
Rick (MVP - Excel)


"Lazzaroni" wrote in message
...
Does the VBScript_RegExp_55.RegExp object support conditionals?

According to http://www.regular-expressions.info/refflavors.html .NET
allows
for conditionals using the (?(if)then|else) structure, and I thought that
the
VBScript RegExp object used the .NET flavor of RegEx. But when I try to
use
it, the object returns an error message.

When I try to do the following:
objRegExp.Pattern = €œ^(<)?test(?(1)|)$€
I get the following error message:
Method 'Test' of object 'IRegExp2' failed

I am trying to use RegEx conditionals to ensure that a string with an
opening bracket has a closing bracket. So the RegEx above would accept
€œtest€
or €œ<test€, but it would not accept €œ<test€ or €œtest€.

I have looked all over for documentation on the VBScript=RegExp_55.RegExp
flavor of RegEx, but have had little success.

Any help would be greatly appreciated.

Thank you.



Lazzaroni

Regular Expression Conditionals (?(if)then|else) in VBA?
 
Rick:

That is correct, but within a larger string. I am looking for unclosed
brackets using a data validation application that uses rules written in
RegEx. It checks the contents of cells in Excel, based on a unique column
identifier.

Thanks.

Thomas

Lazzaroni

Regular Expression Conditionals (?(if)then|else) in VBA?
 
Ron:

Too bad it doesn't use the .NET flavor, which is much more robust.

Thanks.

Rick Rothstein

Regular Expression Conditionals (?(if)then|else) in VBA?
 
Okay, but if I understand your larger goal (checking to ensure multiple
left/right brackets in a text string are paired), this (again, non-RegEx)
code might work for you...

If UBound(Split(Variable, "<")) = UBound(Split(Variable, "")) And _
Not Variable Like "*<[!]<*" And Not Variable Like "*<[!]<*" Then

--
Rick (MVP - Excel)


"Lazzaroni" wrote in message
...
Rick:

That is correct, but within a larger string. I am looking for unclosed
brackets using a data validation application that uses rules written in
RegEx. It checks the contents of cells in Excel, based on a unique column
identifier.

Thanks.

Thomas



Ron Rosenfeld

Regular Expression Conditionals (?(if)then|else) in VBA?
 
On Wed, 8 Oct 2008 12:09:02 -0700, Lazzaroni
wrote:

Ron:

Too bad it doesn't use the .NET flavor, which is much more robust.

Thanks.


I'm not sure exactly what you want to do, but

"<test|(^|[^<])test(?!)"

might match what you wrote for a specific string, so long as it doesn't include
embedded delimiters.

--ron


All times are GMT +1. The time now is 11:19 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com