Регулярное выражение с соответствием в GREL/openrefine
Я использую OpenRefine для анализа столбца со строковыми значениями. Я хочу найти ячейки, которые содержат либо: предложение или скидка. Строковое значение обычно является предложением
Мой код ниже использует функцию соответствия не работает. использование value.contains () ограничено поиском только одного слова.
value.match (/.* (предложение)|(скидка)/)
1 ответ
Что я вижу в документации, так это то, что .match
Функция Пытается сопоставить строку s полностью с шаблоном регулярного выражения p и возвращает массив групп захвата.
Чтобы соответствовать одному из них, но не обоим, вы можете использовать положительный и отрицательный прогноз, если это поддерживается.
Чтобы сопоставить любой из вариантов, используйте чередование, чтобы убедиться, что одно из слов есть, а другое нет, и наоборот:
(?:(?!.*\bdiscount\b).*\boffer\b.*|(?!.*\boffer).*\bdiscount\b.*)
Это будет соответствовать
(?:
Группа без захвата(?!.*\bdiscount\b).*\boffer\b.*
Утверждаю, что справа нет скидки и подберите любой символ и предложение|
Или же(?!.*\boffer).*\bdiscount\b.*
Или утверждать обратное
)
Закрыть группу без захвата