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" ]
我将 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" ]