Bring your best ideas to the AI Use Case Contest! Enter to win 40 hours of expert engineering support and bring your vision to life using the powerful combination of Alteryx + AI. Learn more now, or go straight to the submission form.
Start Free Trial

General Discussions

Discuss any topics that are not product-specific here.

What is wrong with this RegEx if formula?

kjvan026
7 - Meteor

I have a series of data where sometimes there is a number that is at the beginning and sometimes at the end. When it is not included at all, I need to pull different information. However, when I complete this formula I get the error "Parse: Error at Char (109): Formula tried to apply string operator to Numberic value (EndsWith)"

 

if StartsWith([Description], RegEx_Match([Description], ".*\d{7}.*"))
then Left([Description], 7)
Elseif EndsWith([Description], RegEx_Match([Description], ".*\d{7}.*"))
then Right([Description], 7)
elseif Contains([Description], "Supplemental")
then "Supplemental"
elseif contains([Description],"Nevada")
then "Nevada Modified Business Tax"
else "No Description"
endif

 

Here is a small selections of my data:

 

9865265 FUTA Liability
August Nevada Mod Bus Tax

December Supplemental

Leave 1234756

 

 

I know it is with my Regex formula and figure I am overcomplicating the issue. When there is this 7 digit number, I just need to pull it out no matter where it is.

 

Other things to note, my formula is set to be V_WString and the column referenced is a V_String.

4 REPLIES 4
CoG
14 - Magnetar

Remove the StartsWith() and EndsWith(), the function REGEX_Match() returns a boolean/numeric output (0 = false, -1 = true),

 

In doing so you will need to update the parameters for the Match function

If RegEx_Match([Description], "\d{7}.*"))
Then Left([Description], 7)
Elseif RegEx_Match([Description], ".*\d{7}"))
then Right([Description], 7)
elseif Contains([Description], "Supplemental")
then "Supplemental"
elseif contains([Description],"Nevada")
then "Nevada Modified Business Tax"
else "No Description"
endif

 

Notice that we are coding the StartsWith() logic into the RegEx. The expression \d{7}.* , will check if the field [Description] begins with 7 digits.

 

This appears to be what you are trying to do. Based off of your formula (imagine that the first [description] was : "1234567 desc", your current code would be trying to evaluate:

If StartsWith([Description], -1) <- which doesn't make any sense.

 

Hope this helps and Happy Solving!

kjvan026
7 - Meteor

Okay, I see where I went wrong with that. Is there a better code to be able to pull out the number? 

CoG
14 - Magnetar

I just read the bit about pulling out a 7 digit number if it exists anywhere, you can optimize your formula by using two different Regex functions:

 

IF REGEX_Match([Description], ".*\d{7}.*")

THEN REGEX_Replace([Description], ".*(\d{7}).*","$1")

ELSEIF Contains([Description], "Supplemental")
then "Supplemental"
elseif contains([Description],"Nevada")
then "Nevada Modified Business Tax"
else "No Description"
endif

The conditional above does the complete check and pulls out only the seven digit # if one is found. Note: I am using your logic, if other numbers can be present in your data (i.e. 8+ digit) then this Regex will break.

kjvan026
7 - Meteor

This is exactly what I need! Thank you!!

Labels
Top Solution Authors