在 OpenRefine 中使用 GREL 提取文本

Extract text using GREL in OpenRefine

我正在尝试使用 GREL 添加基于 OpenRefine 中的列的列。

我需要提取科学名称中第二个 space 之后的所有文本。

这里有两个原始单元格数据的例子--->我要提取的内容:

Amandinea punctata (Hoffm.) Coppins & Scheid. ---> (Hoffm.) Coppins & Scheid. Agonimia tristicula (Nyl.) Zahlbr. ---> (Nyl.) Zahlbr.

一个解决方案: 分区似乎是一个很好的分隔符:“(”,取右边的部分并在开头添加一个缺失的“(”。

"("+value.partition(" (")[2]

以下是在给定数据上实现预期结果的三种方法,从容易理解到更高级。

使用列拆分

您可以 split the column 通过选择空格作为分隔符将其分成三列,并在相应的对话框中将新列的数量限制为 3。然后你可以删除前两列并得到你想要的结果。

使用数组函数

您可以通过 GREL 和 arrays 使用相同的技术...按空白拆分,丢弃前两个条目并在空白处加入其余条目。

value.split(" ").slice(2).join(" ")

使用正则表达式

您还可以将 match function 与正则表达式一起使用。

value.match(/\S+\s\S+\s(.+)/)[0]