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
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

classification builder - regex for multiple values that adjust

scottt6073095
Level 6
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
spencerh7639004
Correct answer by
Level 1
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
JimKultgen
Level 3
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

spencerh7639004
Correct answer by
Level 1
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