首页 > 解决方案 > openrefine 如何从每个单元格的末尾删除某些单词

问题描述

我在 openrefine 中有一个专栏,其中的单元格内容如下:

This dog is a great dog.
This cat is a great cat,

我想从每个单元格的末尾删除狗,猫(如果标点符号也可以删除,那就太好了)。

我试过了

\bdog\s*$ 但我收到错误,或者没有完成替换我使用的是 openrefine 3.3。

value.replace(\bdog|\bcat\s*$,'')

我得到的错误:

Parsing error at offset 14: Missing number, string, identifier, regex, or parenthesized expression

所需的输出:

This dog is a great
This cat is a great

另外,如果我也可以删除所有字符,例如“:,。”(实际上我正在寻找一个正则表达式来集群出版商 - 图书馆员数据),所以如果你能建议我应该从末尾删除的话,那就太好了细胞,我将不胜感激

标签: openrefine

解决方案


我将 Ettore 答案与选择字符串最后一部分单词的split()函数结合起来。value.split(' ')[-1]

结果是: replace(value,value.split(' ')[-1],'') + value.split(' ')[-1].replace(/cat|dog/,'')

在哪里

  • replace(value,value.split(' ')[-1],'')选择你的字符串期待最后的工作
  • value.split(' ')[-1].replace(/cat|dog/,'')如果最后一个单词包含cator ,则将其替换为空dog

请注意,由于字符串末尾的标点符号,表达式正在工作。这不是一个完美的解决方案,但您可以从这里构建一些东西。


推荐阅读