Skip to main content

The Regular Expression action is an extremely powerful action for splitting text, replacing text or getting data out of text.  Don't be worried about not knowing how to put Regular Expressions together.  There are a number of sites online that give you the basics of it.  In this post, I'll give you some quick tips on how to get data that you may need.

Splitting Text


There are times where you will be getting data from lists, from web services, databases or elsewhere, where the data comes to you in a delimited form.  Either comma delimited, as in CSV files, or semi-colon delimited, as from some accounting systems or some other delimiter.  If you need to get the data into a Nintex Workflow collection variable, you can use the Regular Expression action to split the data based on that delimiter.

 

Split.png

Notice that the first data entry field to fill is in the pattern.  When doing a split, this is the delimiter.  The character or characters that will be used to split a piece of text.  The operation is "Split" and the Input text, I've simply typed in some text with the comma separating them.

 

The result of this needs to be stored in a Nintex Workflow collection variable.  For more information on the collection variable, take a look at these :

http://nintexdownload.com/Nsupport/tutorials/How%20to%20use%20the%20Collection%20variable.pdf

and

Nintex Workflow - Collection Variable - Vadim Tabakman

 

The interesting thing to note here, is that the pattern is a Regular Expression.  Although it could be a single character, like a comma or even several characters like #!# if that is the delimiter (I used to use that), it could also be very intelligent as you could give it options.

eg.  ;|,

 

The above example is stating that the delimiter could be a comma or a semi-colon.  That really opens things up doesn't it?

 

To get a little more elaborate, what if your delimiter was a period (dot or full stop for non US people)?  Well, in Regular Expressions, a period is a special character.  So in that case, you need to escape it.  You would do it like this:

.

 

Putting the backslash on it escapes it and lets the Regular Expression parser recognize that you want to deal with a period and not their special meaning of it.

 

Replacing Text

 

Using a Regular Expression action is not the only way in Nintex Workflow to replace text.  There is an inline function you can use in a Build String action, called fn-Replace.  Having said that, that action only lets you replace a known piece of text with another piece of text.

 

The Regular Expression action allows you to build complex expressions so that not only do you replace a piece of text, but you can find any number of matching sequences of text or replace only one piece or just from the beginning or from the end.  The number of expressions you can build is almost infinite.

 

Replace.png

In the screenshot above, we have some text "abc-def-ghi-123-lmn" and we cant to replace the numbers with a ###.  Now if you were to use this with a Build String action (with fn-Replace), you would need to know those 3 digits.  But if this was data coming in from another system, those 3 digits would be different each time.  That's where the Regular Expression action is so powerful.

 

You can build an expression like ;0-9]+.  This is saying that every in my text where I find one or more digits, I want to replace them with ###.

 

Another expression that would do the same thing is sd]+ .  The reason I show you this, is because there may be other expressions that do the same things as what you're doing now.  Some will make your expression smaller and more streamlined.  Others maybe actually be faster at finding the text you need.  Although I would say that for workflows that you build, you're unlikely to come up with a scenario that the performance of a Regular Expression is something to worry about.

 

Extract Text

 

This can be as simple as the replace above, or something more complete.

 

To extract the numbers from the example above "abc-def-ghi-123-lmn", you can use the same expression.

ld]+

 

The main thing to note here, is that the Extract option will only save the results into a Collection variable, even if you know you're only getting one result back.  So you should be aware of this when extracting data.

ExtractSimple.png

Where it gets a little more complex, is if you want to extract data between two strings.

Let's take the above text as an example.  If we needed to get all the numbers, but they had to be between 3 text characters and the dash, on both sides, how would this be done?

 

In this case, our Regular Expression gets a lot more complex.  It would look like this :

(?<=w+-)d+(?=-w+)

 

You're probably looking at this and thinking it is gibberish.  That's what I thought it was when I first was learning about Regular Expressions.

It broken up into three components.

(?<=w+-) - This is called a Positive Lookbehind .  We're looking for some text that is a number of text characters followed by a dash (hypen).

d+ - This is the data we want to extract.  It is one or more numerical digits.

(?=-w+) - This is called a Positive Lookahead.  We are looking ahead to find a dash (hypen) followed by one or more text characters.

 

ExtractComplex.png

Although when you look at complex regular expressions, they look daunting, they actually aren't.  You just need to spend a little time playing around with them and maybe running through some tutorials and you'll be well on your way to build awesome business solutions.

 

Match

 

The match operation, I'm not going to talk about much, since it's similar to the others. It simply lets you know if based on your Regular Expression, there is a match in your text.  A good example of this, is if you didn't have Form validation and you wanted to validate that someone had entered a valid email into an item field that the workflow is running on, you could use this functionality to match it.  If it matched, you could continue with the workflow but if it didn't, you could notify the initiator to get them to fix the issue.

 

Conclusion

 

Regular Expressions are extremely useful in countless scenarios.  Don't be afraid to play around with them and use them to make your workflows very slick.  If you want to learn more, take a look at this site, which is one that I go to often to if I need a refresher - RegExr: Learn, Build, & Test RegEx

 

I hope this explains a little on how to use Regular Expressions in your Nintex Workflows.  If you have any questions, please free to post them in the comments section.

Hi Vadim Tabakman

I am displaying rich text content in mail using email notification action. The content is coming from multiple line of text column.

This content has SharePoint page link. When I open this link from email, it wont open as hyperlink will be set as relative link in

multiple line of text column always.

ie /sites/test/Pages/Home.aspx instead of full url.

How can we fix this using Nintex workflow action. Is tehre any way to fix using regular expressions?

Thanks,

Prashant


Hey Vadim Tabakman

I'm totally new to regular expressions. I'm trying to extract all the data (alpha and numeric) between an open and close bracket. [ ]

I'm sure it's super easy...

Thanks

Kassie


Never mind, I figured it out.

[(.*?)]


Hi Kassy,

Configured the Regular Expression to do an Extract.

Pattern--->   (?<=;)[dw]+(?=])

Store the result in a Collection variable.

Then you'll need a Collection operation action and configure it to either do a Get at the zero position (that's the first position in the collection)

Or, even easier, configure the Collection Operation to do a Pop, if you expect to only have one result.

cheers,

Vadim


ooh that's way nicer!!!

Great stuff and thanks for sharing Kassie.

Vadim


Hey thanks for responding Vadim!

Now that I've grabbed the string, I'm wondering how to remove all the quotes "" from it. Do you know a regex for that? I've been goggling like mad but no luck so far with a successful regex.

Thanks

Kassie


Hi Kassie,

you could just try a "" and configure it todo a replace.

Or another way would be to use a Build String action and use the fn-Replace function.

Good luck with it.

cheers,

Vadim


I was doing an extract regex rather than a replace. Then, I was replacing with " "... that didn't work out.

I ended up leaving the replace field empty and that worked.

Thanks again for your help Vadim!

Kassie


Hello Vadim Tabakman,

I need some help, I have this comment from after Assign Flexi task

"Name Surname (Approve) 8.8.2016. 11:11 - 8.8.2016. 11:11 (Name Surname)  some comment Name2 Surename2 (Approve) 8.8.2016. 11:11 - 8.8.2016. 11:15 (Name2 Surename2) some comment Name3 Surename3 (Not Required) 8.8.2016. 11:11 -"

I want to get all Names Surnames of people who approved this task, Name and Surname before (Approve). How to do it? Please for your help.

Thanks !


Hi Vadim

I have used people or group function in the form and I want to show the detailed in the email body. I have managed to grab most information however i am unable get clean information from people or group field. For example I have field  for Reporting manager and the out put shows as - i:0#.f|membership |theek.@live.com|. I want to display the name and it showing the email with the claim token.

i am using Nintex 2013.

I have try to use Regular Expression but the result is same.

Thanks

Theekshana  


Maybe you can use the Query LDAP or Query User Profile action to take that and get back the display name.

Vadim


Hi Vadim

Thanks for your Help. 

One of my requirement is that the form information should be able to email by embedding the forms information to email body. I have able to do this through Nintex workflow. However I have hit several road blocks.

1. Instead of showing Reporting Managers' name from people or group picker it showing the email and claim token even I have selected to display the name.

2. I have three type of date fields

  •  Start date: when I create this column I selected "date only" . So in SharePoint list it show the information correctly. However the issue is creating in the email body. In email body it show the selected time and the date. My questions is how do I eliminate the time. I only want to show the date.
  • Fixed Contractor End Date: This column should only have information when the user select the employment type as Fixed contractor. If user select any other option this filed should be empty. Again in the SharePoint list information show correctly. However in the email body it show the default value when the user did not select the Fixed contractor. E.g - Fixed Contractor End Date - Monday, 1 January 0001. how do I fixed this.

  • Temporary Contractor End Date:  This column should only have information when the user select the employment type as Temporary Contractor. If user select any other option this filed should be empty. Again in the SharePoint list information show correctly. However in the email body it shows the default value when the user did not select the Temporary Contractor. E.g - Temporary Contractor End Date - Monday, 1 January 0001. how do I fixed this.

These are the four problems that I am unable to fix at them moment. I have read through some of the available solution in the net however due to the version different it hard find. I am use 2013. Other thing is that I don't have full authorization to add things to SharePoint and and Nintex. So I am looking solution that doesn't need admin level expertise to get the form run.

It would be grate if  you could help in this regards.

Thanks.

Theekshana 


Hi, Vadim,

I have created a field called "user email address" and selected as Person or Group. Also selected show field as "Work email". However, in the form, it does not show the email address instead of it show the person name.  This is going to confuse all users who are going to use this form.

Email address is not showing

On the other hand, when I send a test email using the same form;  the field of "user email address" shows the email address in the email body. 

Email body shows user email address

I can't figure it out why it does not show the email address in the form?

Please help me...... I have tried all available options I can find on the internet.

Regards

Theekshana


Vadim,

I'd like to replace the response to a survey that produces a value: 'How'd we do?;#5#' and be left with just the response, in this case 5. Is that possible to do with Nintex Regex Replace so that I'm left with a number?


Hi Vadim

I want to restrict the field which will take only numbers with dots. for example 10.11.1111.100 IP Address


Reply