无法正确转义 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""

根据文档,最后一个应该是正确的语法,但它也因上述错误代码而失败。我做错了什么?

在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"

对于输入(来自表创建者(She said: "1/2 is half", but in BASIC the integer division is denoted by 它将生成match

编辑:解析器和语法描述确认了这些。

最新更新