在 GREL/OpenRefine 中匹配的正则表达式
regex with match in GREL/OpenRefine
我正在使用 OpenRefine 解析具有字符串值的列。
我想找到包含报价或折扣的单元格。
字符串值通常是一句话
我下面的代码使用的匹配功能不起作用。
使用 value.contains()
仅限于搜索一个词。
value.match(/.*(offer)|(discount)/)
我在 documentation 中看到的是 .match
函数 尝试将整个字符串 s 与正则表达式模式 p 和 returns 进行匹配一组捕获组.
要匹配其中一个而不匹配两者,您可以使用正数和负数 lookahead(如果支持)。
要匹配任一选项,请使用 alternation 确保其中一个单词存在而另一个不存在,反之亦然:
(?:(?!.*\bdiscount\b).*\boffer\b.*|(?!.*\boffer).*\bdiscount\b.*)
那将匹配
(?:
非捕获组
(?!.*\bdiscount\b).*\boffer\b.*
断言右边是无折扣匹配任意字符和offer
|
或
(?!.*\boffer).*\bdiscount\b.*
或者相反
)
关闭非捕获组
我正在使用 OpenRefine 解析具有字符串值的列。 我想找到包含报价或折扣的单元格。 字符串值通常是一句话
我下面的代码使用的匹配功能不起作用。
使用 value.contains()
仅限于搜索一个词。
value.match(/.*(offer)|(discount)/)
我在 documentation 中看到的是 .match
函数 尝试将整个字符串 s 与正则表达式模式 p 和 returns 进行匹配一组捕获组.
要匹配其中一个而不匹配两者,您可以使用正数和负数 lookahead(如果支持)。
要匹配任一选项,请使用 alternation 确保其中一个单词存在而另一个不存在,反之亦然:
(?:(?!.*\bdiscount\b).*\boffer\b.*|(?!.*\boffer).*\bdiscount\b.*)
那将匹配
(?:
非捕获组(?!.*\bdiscount\b).*\boffer\b.*
断言右边是无折扣匹配任意字符和offer|
或(?!.*\boffer).*\bdiscount\b.*
或者相反
)
关闭非捕获组