Regex for value.contains() in Google Refine

3.9k views Asked by At

I have a column of strings, and I want to use a regex to find commas or pipes in every cell, and then make an action. I tried this, but it doesn't work (no syntax error, just doesn't match neither commas nor pipes).

if(value.contains(/(,|\|)/), ...

The funny thing is that the same regex works with the same data in SublimeText. (Yes, I can work it there and then reimport, but I would like to understand what's the difference or what is my mistake).

I'm using Google Refine 2.5.

2

There are 2 answers

0
Wiktor Stribiżew On BEST ANSWER

Since value.match should return captured texts, you need to define a regex with a capture group and check if the result is not null.

Also, pay attention to the regex itself: the string should be matched in its entirety:

Attempts to match the string s in its entirety against the regex pattern p and returns an array of capture groups.

So, add .* before and after the pattern you are looking inside a larger string:

if(value.match(/.*([,|]).*/) != null)
0
Lara M. On

You can use a combination of if and isNonBlank like:

if(isNonBlank(value.match(/your regex/), ...