我正在使用OpenRefine解析具有字符串值的列。 我想找到包含以下两个单元的单元:要约或折扣。 字符串值通常是一个句子
我下面的代码使用匹配功能不起作用。 使用value.contains()仅限于搜索一个单词。
value.match(/.*(优惠)|(折扣)/)
答案 0 :(得分:0)
我在documentation中看到的是.match
函数试图将整个字符串s与正则表达式模式p匹配,并返回捕获组数组。
要同时匹配其中一个而不匹配两者,可以使用正数lookahead和负数alternation。
要匹配任一选项,请使用Regex demo来确保其中一个单词存在而另一个不存在,反之亦然:
(?:(?!.*\bdiscount\b).*\boffer\b.*|(?!.*\boffer).*\bdiscount\b.*)
这将匹配
(?:
非捕获组
(?!.*\bdiscount\b).*\boffer\b.*
断言右边没有折扣,并且匹配任何字符和要约|
或(?!.*\boffer).*\bdiscount\b.*
或主张相反的意思)
关闭非捕获组