Регулярное выражение для value.contains() в Google Refine

У меня есть столбец строк, и я хочу использовать регулярное выражение, чтобы найти запятые или каналы в каждой ячейке, а затем выполнить действие. Я пробовал это, но это не работает (нет синтаксической ошибки, просто не совпадает ни с запятыми, ни с трубами).

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

Самое смешное, что одно и то же регулярное выражение работает с теми же данными в SublimeText. (Да, я могу тут же заняться импортом, но я бы хотел понять, в чем разница или в чем моя ошибка).

Я использую Google Refine 2.5.

2 ответа

Решение

Поскольку value.match должны возвращать захваченные тексты, вам нужно определить регулярное выражение с группой захвата и проверить, не является ли результат нулевым.

Также обратите внимание на само регулярное выражение: строка должна совпадать полностью:

Пытается сопоставить строку s полностью с шаблоном регулярного выражения p и возвращает массив групп захвата.

Итак, добавьте .* до и после паттерна, который вы смотрите внутри большей строки:

if(value.match(/.*([,|]).*/) != null)

Вы можете использовать комбинацию if и isNonBlank, например:

if(isNonBlank(value.match(/your regex/), ...
Другие вопросы по тегам