无法正确转义 KNIME 中的规则
Unable to properly escape rules in KNIME
我使用 "table creator" 创建一个规则列表,然后将其提供给 "rule-based row splitter (dictionary)"
规则的形式为:
$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"
对于输入(来自 Table Creator)She said: "1/2 is half", but in BASIC the integer division is denoted by \
它将产生 match
编辑:parser and the grammar description 确认这些。
我使用 "table creator" 创建一个规则列表,然后将其提供给 "rule-based row splitter (dictionary)"
规则的形式为:
$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"
对于输入(来自 Table Creator)She said: "1/2 is half", but in BASIC the integer division is denoted by \
它将产生 match
编辑:parser and the grammar description 确认这些。