正则表达式负先行不排除所需的字符串

Regex negative lookahead not excluding required string

美好的一天

我一直在尝试在 Netezza SQL 中的 regex_like 函数中应用特定排除:regexp_like(trim(upper( a.MRCH_NME)),'\bMAKRO\s?(?!DEBTORS)','i')

不幸的是,我无法获得排除 "DEBTORS" 的表达式。谁能帮我找出错误?

谢谢。

这是对您的模式的一种快速修复:

\bMAKRO\s(?!DEBTORS)

代码:

regexp_like(trim(upper(a.MRCH_NME)),'\bMAKRO\s(?!DEBTORS)','i')

您当前的模式允许 MAKRO DEBTORS WOODME 通过的原因是它可以将 \s 作为可选,然后断言 DEBTORS 不会紧跟在 MAKRO 之后.

Demo

编辑:

你也可以稍微重写你的负面前瞻:

\bMAKRO(?!\s?DEBTORS)