Openrefine:与正则表达式分开会产生奇怪的结果

时间:2017-09-24 16:30:33

标签: openrefine

我将GREL表达式“value.split(/ a /)”应用于某些单元格:

abcdef   -> [ "", "bcdef" ]
bcdefa   -> [ "bcdef" ]
badef    -> [ "b", "def" ]

我无法理解为什么第一个单元格在结果表中给了我一个“”元素。这是一个错误吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道Java足以评论这个函数的source code,但according to one of the developers of Open Refine这种行为是正常的(编辑:欧文评论中的更多细节,见下文)。这就是为什么还有其他功能来分割字符串。

例如,当value.smartSplit(/a/)位于字符串的开头或结尾时,

sep会给出更一致的结果:

row value   value.smartSplit(/a/)
1.  abcdef  [ "", "bcdef" ]
2.  bcdefa  [ "bcdef", "" ]
3.  badef   [ "b", "def" ]

这与使用启用了partition()选项的omitfragment = true的结果相同:

row value   value.partition(/a/, true)
1.  abcdef  [ "", "bcdef" ]
2.  bcdefa  [ "bcdef", "" ]
3.  badef   [ "b", "def" ]