Невозможно правильно избежать правил в 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

Редактировать: синтаксический анализатор и описание грамматики подтверждают это.

Другие вопросы по тегам