Openrefine:用正则表达式拆分给出奇怪的结果

Openrefine: split with regex gives strange result

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

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

我不明白为什么第一个单元格在结果 table 中给我一个“”元素。是错误吗?

谢谢!

我不知道 Java 足以评论 source code for this function, but according to one of the developers of Open Refine 这种行为是正常的(编辑:Owen 评论中的更多细节,如下)。这就是为什么还有其他函数可以拆分字符串的原因。

例如,

value.smartSplit(/a/)sep 位于字符串的开头或结尾时,会给出更一致的结果:

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

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

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