删除 OpenRefine 中某个单词后的所有内容

Remove everything after a certain word in OpenRefine

我想用 OpenRefine 删除单元格中特定单词 ("am") 后的所有内容。

我的数据:

Workshop im Rahmen des Weiterbildungsprogramms am 02. November 2015

Brainstorming am 09. November 2015 in Bremen

Workshop "Auswählen und bewerten" am 17. November 2015 in Hamburg

正则表达式示例:[\n\r].*am\s*([^\n\r]*)

在此处查看实际效果:http://rubular.com/r/bBlXOMoos1

行得通。我想要以下结果。

Workshop im Rahmen des Weiterbildungsprogramms

Brainstorming

Workshop "Auswählen und bewerten"

我试过了:value.replace(/[\n\r].*am\s*([^\n\r]*)/, '')

问题不在于正则表达式,如有必要,我可以在第二步中删除 "am"。但我无法让正则表达式与 value.replace.

结合使用

你能用 Python/Jython 试试这个吗?

import re
return re.sub(r"am.+","", value)

我认为 Python 的正则表达式通常比 GREL 的更一致。但是如果你想用GREL,这样不行吗?

value.replace(/\s+am.+/, '')

我觉得你混合了 value.match() 的语法(这要求你匹配单元格中的整个字符串,然后 select 你想要的子字符串)和 value.replace() (其中你只能匹配你需要的子串)。

问题实际上很简单,您在 * 之前缺少 . 以删除所有尾随内容,现在您的正则表达式表示 [=13 之后有 0 个或更多空格=],但你希望它在它之后清除所有其他内容......这有效:

value.replace(/\sam.*/,'')