REGEX用于完整的单词匹配

Ran*_*ndy 3 regex sql oracle oracle10g oracle11g

好的我很困惑(很明显)

我正在尝试返回行(来自Oracle),其中文本字段包含完整的单词,而不仅仅是子字符串.

一个简单的例子就是"我"这个词.

向我展示字符串中包含单词"I"的所有行,但不是简单地将"我"作为子字符串放在哪里 '%I%'

所以我写了我认为简单的正则表达式:

select REGEXP_INSTR(upper(description), '\bI\b') from mytab;
Run Code Online (Sandbox Code Playgroud)

期待我应该用字边界检测到.我没有得到任何结果(或者说每行的结果为0).

我期待的是:

  • '我是管理员' - > 1
  • '我是管理员' - > 0
  • '我是管理员' - > 1
  • '这是臭名昭着的管理员' - > 0
  • '管理员,我是 - > 1

是不是/ b应该通过单词边界找到包含的字符串?

TIA

Fai*_*Dev 8

我相信你的正则表达式不支持\ b:

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#i1007670

因此你可以这样做:

(^|\s)word(\s|$)
Run Code Online (Sandbox Code Playgroud)

至少要确保你的"单词"被一些空格分隔,或者它是整个字符串.