1

我正在使用 OpenRefine 解析具有字符串值的列。我想找到包含以下内容的单元格:优惠或折扣。字符串值通常是一个句子

我下面的代码使用匹配功能不起作用。使用value.contains()仅限于搜索一个单词。

value.match(/.*(offer)|(discount)/)

4

1 回答 1

0

我在文档中看到的是该.match函数尝试将字符串 s 与正则表达式模式 p 完全匹配并返回一个捕获组数组

要匹配其中一个但不匹配两者,如果支持,您可以使用正向和负向预读

要匹配任一选项,请使用交替来确保其中一个单词存在而另一个单词不存在,反之亦然:

(?:(?!.*\bdiscount\b).*\boffer\b.*|(?!.*\boffer).*\bdiscount\b.*)

正则表达式演示

那将匹配

  • (?:非捕获组
    • (?!.*\bdiscount\b).*\boffer\b.*断言右边没有折扣并匹配任何字符和报价
    • |或者
    • (?!.*\boffer).*\bdiscount\b.*或断言相反
  • )关闭非捕获组
于 2019-01-26T20:48:39.197 回答