我申請GREL表達「value.split(/ A /)」一些細胞:Openrefine:分裂與正則表達式給出了奇怪的結果
abcdef -> [ "", "bcdef" ]
bcdefa -> [ "bcdef" ]
badef -> [ "b", "def" ]
我不明白爲什麼第一個單元格給了我一個「 「元素在結果表中。這是一個錯誤嗎?
謝謝!
我申請GREL表達「value.split(/ A /)」一些細胞:Openrefine:分裂與正則表達式給出了奇怪的結果
abcdef -> [ "", "bcdef" ]
bcdefa -> [ "bcdef" ]
badef -> [ "b", "def" ]
我不明白爲什麼第一個單元格給了我一個「 「元素在結果表中。這是一個錯誤嗎?
謝謝!
我不知道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" ]
的OpenRefine '分裂' 功能(具有reg EXP)簡單地使用Java字符串「拆分「方法。這個方法的結果是一個「包含輸入序列的每個子串,由另一個匹配這個模式的子序列終止」 - 也就是說,它總是將你匹配的模式作爲序列的終止符 - 當模式匹配字符串中的第一個字符,其前面的子字符串是空的 - 因此是第一個空子字符串。更多信息請訪問https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#split(java.lang.CharSequence,%20int) –
謝謝!我注意到value.partition和value.smartSplit ... –
再次思考......即使preserveAllTokens = false,是否有正常的[「」,「abc」]? –
問題轉移到開發商:https://github.com/OpenRefine/OpenRefine/issues/1255 –