Регулярное выражение для 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/), ...