Advent of Code is back! Unwrap daily challenges to sharpen your Alteryx skills and earn badges along the way! Learn more now.
Free Trial

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

RegExp: Add a "-" every 3 characters from right to left

BautistaC888
8 - Asteroid

Hello,
I need a regular expression that transforms expressions like this:
40304023
Into this:
40-304-023
Thank you.

15 REPLIES 15
mpennington
11 - Bolide

I think this should work, given your example.

 

ReverseString(REGEX_Replace(
ReverseString(ToString([Field1])),
"(\d{3})(\d{3})(\d{2})","$1-$2-$3"))

 

 

RegExReverse.jpg 

marcusblackhill
12 - Quasar
12 - Quasar

Hi @BautistaC888 !

 

 

Always have that pattern?( lenght, only numbers)

 

If yes, you don't need regex, can use string formulas for it, like:

left([field1],2)+"-"+substring([field1],3,3)+"-"+right([field1],3)

 

Hope that helps!

mpennington
11 - Bolide

I should note that my solution above is overly complicated, if you just have 8 digits every time, but the format allows you to expand on the RegEx to deal with other scenarios.  If it is always 8 digits, you could essentially work it left to right to accomplish the same thing:

 

Regex_Replace(ToString([Field1]),'(\d{2})(\d{3})(\d{2})','$1-$2-$3')

 

 

 

BautistaC888
8 - Asteroid

No, the patterns are different.

marcusblackhill
12 - Quasar
12 - Quasar

Can share with us some examples of how can appear in you dataset?

mpennington
11 - Bolide

@BautistaC888 , How are they different? What are the limitations?  We would need the parameters, if you want the solution to handle different sized inputs.  

BautistaC888
8 - Asteroid

Here is an example.

mpennington
11 - Bolide

@BautistaC888 , I think you may have forgotten to attach a file or accidentally deleted text from your response--I'm not seeing anything.

BautistaC888
8 - Asteroid

I´m sorry.

Labels
Top Solution Authors