Oracle regexp模式,在两个短语之间具有指定数量的字符串

时间:2017-02-27 14:41:50

标签: sql regex oracle

我需要一个匹配任何产品的正则表达式" bebilon 3"在一些不同产品的描述中,如:

  • " bebilon 3对于婴儿来说非常棒"
  • " bebilon super extra 3 300g"
  • " bebilon super 3 3x200g"
  • " bebilon super 2 something"

我决定,大部分案例都适合bebilon (something){0,2} 3

并且这样写道:

regexp_like(description, 'bebilon ([^[:space:]]+){0,2} 3', 'i')

我说错了吗?什么会更好?我在这个解决方案中遇到了一些空格问题。

1 个答案:

答案 0 :(得分:0)

... 
where regexp_like(description, ' bebilon( .+ | )3 ')

这将返回说明中包含字符' bebilon '' 3 '的每一行。注意 - 您可能将bebilon作为第一个单词(可能是大写的),而3可能是字符串中的最后一个字符,因此可能需要修改reg expr模式。在提供全面,正确的解决方案之前,您需要提供一份全面,详尽的列表,列出所有可能需要考虑的特殊情况。

注意:( .+ | )表示 空格,然后是一个或多个字符,然后是空格,恰好是一个空格。这是需要在bebilon和3之间的内容。(这不允许在bebilon和3之间准确地使用两个空格;如果您也想允许这样做,请将.+更改为.*)。