【问题标题】:Regex negative lookahead not excluding required string正则表达式负前瞻不排除所需的字符串
【发布时间】:2018-05-18 09:04:07
【问题描述】:

美好的一天

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

很遗憾,我无法使用表达式来排除“债务人”。谁能帮助我找出我的错误?

谢谢。

【问题讨论】:

  • 请向我们展示样本数据,包括正例和负例。
  • 嗨,蒂姆,请看下面的几个样本:MAKRO AMANZIMTOTI,346733 MAKRO LI,C#MAKRO STRUBENS VALLE,MAKRO DEBTORS WOODME
  • 请编辑您的问题

标签: sql regex netezza


【解决方案1】:

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

\bMAKRO\s(?!DEBTORS)

代码:

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

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

Demo

编辑:

您也可以将您的否定前瞻稍微改写为:

\bMAKRO(?!\s?DEBTORS)

【讨论】:

  • 我明白了,谢谢蒂姆。非常感谢您的帮助。
  • @Atlas_Apple 这能解决您的问题吗?我无法在 Netezza 中进行测试。
  • 嗨蒂姆,是的,它确实解决了我的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2011-10-14
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多