Невозможно правильно избежать правил в KNIME
Я использую "создатель таблицы" для создания списка правил, которые затем передаются в "разделитель строк (словарь) на основе правил"
Правила имеют вид:
$colname$="somevalue" TRUE
Я создал эту настройку уже несколько раз, и она работает нормально. Однако некоторые из строковых значений, которые мне нужно сравнить, содержат двойные кавычки. Согласно официальной документации, их необходимо убрать с помощью обратной косой черты. Я пробовал это в различных перестановках, но это всегда терпит неудачу.
Сообщение об ошибке:
ERROR Rule-based Row Splitter (Dictionary) 0:228 Execute failed:
java.text.ParseException: Line: 306: Expected: =>
$value$="2\"" => TRUE
Правило форматирования, я пробовал, все провалилось
$col$=5"
$col$=5\"
$col$="5""
$col$="5\""
Согласно документам, последний должен иметь правильный синтаксис, но он также не работает с приведенным выше кодом ошибки. Что я делаю неправильно?
2 ответа
Нашли ответ после долгой дискуссии на форумах KNIME. Для полноты выложу ответ здесь:
Здесь есть два проблемных случая, и решение состоит в том, чтобы обрабатывать их отдельно, один за другим.
1) Ваша строка содержит двойные кавычки:
Это запрещено KNIME. Инкапсулируйте вашу строку в слэши следующим образом:
$colname$ = /and she said: "hi"/
2) Ваша строка содержит косые черты:
Окружите свою строку двойными кавычками так:
$colname$ = "i need size 40 3/4"
Если вы оба смешали одну и ту же строку, вам нужно использовать фрагменты кода.
Вы не можете убежать со строками в кавычках ("
), но вы можете использовать Perl-подобные строки, где символом начала и конца является символ косой черты (/
), хотя там вам не нужно убегать "
, (Вам нужно убежать от /
хотя с \
персонаж, который также должен быть экранирован, если вам это нужно.)
Пример:
$column1$ = /She said: "1\/2 is half", but in BASIC the integer division is denoted by \\/ => "match"
TRUE => "no match"
Для ввода (от Table Creator) She said: "1/2 is half", but in BASIC the integer division is denoted by \
это произведет match
Редактировать: синтаксический анализатор и описание грамматики подтверждают это.