首页 > 解决方案 > 使用 Python 在 Openrefine 中应用正则表达式

问题描述

我正在尝试使用value.findall()OpenRefine 3.4 中的函数,方法是查找包含特定字符串的列中的所有行,即“ WASHER”、“ FLAT”、“ 10MM”和“ SS”`,以任何给定的随机顺序并将其返回到新列中。这是我的代码片段。

import re
regex=r"(\WASHER)(\"FLAT")(\"10MM")(\"SS")"
return re.findall(regex, value)

这是屏幕的样子。

我的屏幕截图我列中的数据是什么样的

标签: pythonregexjythonopenrefinegrel

解决方案


您需要将以下代码放入框中:

import re
regex=r'^(?=.*\bWASHER\b)(?=.*\bFLAT\b)(?=.*\b10MM\b)(?=.*\bSS\b).*'
return re.findall(regex, value)

这将返回一个完整的字符串,其中包含WASHERFLAT和字符串中任何位置10MMSS整个单词。

请参阅正则表达式演示

如果它们立即连续发生,您可以使用

regex=r'.*?\bWASHER\s+FLAT\s+10MM\s+SS\b.*'

请参阅此正则表达式演示


推荐阅读