Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

classification builder - regex for multiple values that adjust

Avatar

Level 6

Hi All,

Having some difficulties figuring out how to create regex that adjusts to the number of groups.

I can have any number of parts ranging from 1 to 4

strings:

events:company-conferences/company-user-conference/2018

events:company-conferences/company-user-conference

events:company-conferences

I tried this regex however it only returns the correct values if it has 4 capture groups, no more no less.

^([^\:]*)\:([^\:]*)\/([^\:]*)\/([^\:]*)

1525466_pastedImage_8.png

I tried the below regex however it does the same

^(.+)\:(.+)\/(.+)\/(.+)

is there regex logic that is flexible to the number of capture groups in a string? I would like to capture string that have groups up to 4 but may have 3 or 2.

any help would be highly appreciated.

thanks

1 Accepted Solution

Avatar

Correct answer by
Level 1

Something like : ^(.+)\:(.+?)(\/|$)(.*?)(\/|$) (repeating (.*?)(\/|$) to the number of possible results will get you in even numbered fields the results you want.  So for 1-4:

^(.+)\:(.+?)(\/|$)(.*?)(\/|$)(.*?)(\/|$)(.*?)(\/|$)

You can see the results here: https://regexr.com/3sjh5

View solution in original post

3 Replies

Avatar

Level 3

I do something similar in which I essentially have a different rule for either 5 or 6 fields.  Not sure if there is a more robust way but this should be easy to build from for 2/3/4 fields.  As an FYI my deliminator is an underscore.

^((.+)\_(.+)\_(.+)\_(.+)\_(.+)\_(.+)|(.+)\_(.+)\_(.+)\_(.+)\_(.+))$

sample Regex.png

Avatar

Correct answer by
Level 1

Something like : ^(.+)\:(.+?)(\/|$)(.*?)(\/|$) (repeating (.*?)(\/|$) to the number of possible results will get you in even numbered fields the results you want.  So for 1-4:

^(.+)\:(.+?)(\/|$)(.*?)(\/|$)(.*?)(\/|$)(.*?)(\/|$)

You can see the results here: https://regexr.com/3sjh5