Невозможно правильно избежать правил в KNIME - PullRequest
0 голосов
/ 13 февраля 2019

Я использую «создатель таблицы» для создания списка правил, которые затем передаются в «разделитель строк (словарь) на основе правил»

Правила имеют вид:

$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 ]

0 голосов
/ 14 февраля 2019

Вы не можете выйти со строками в кавычках ("), но вы можете сделать это с помощью 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

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

0 голосов
/ 13 февраля 2019

Нашел ответ после долгой дискуссии на форумах KNIME.Публикация ответа для полноты картины:

Здесь есть два проблемных случая, и решение состоит в том, чтобы обрабатывать их отдельно, один за другим.

1) Ваша строка содержит двойные кавычки :

Это запрещено KNIME.Инкапсулируйте вашу строку в слэши следующим образом:

$colname$ = /and she said: "hi"/

2) Ваша строка содержит слэши :

Окружите вашу строку двойными кавычками, например:

$colname$ = "i need size 40 3/4"

Если вы оба смешали одну и ту же строку, вам нужно использовать фрагменты кода.

...