如果模式到最后,如何禁用匹配

时间:2015-01-14 09:42:28

标签: regex postgresql

如果模式位于一行的末尾,我想禁用匹配模式。 例如,我的字符串是" Hello,world"我也希望匹配这个字符串和"你好,世界!"串。 到目前为止我试过

SELECT 'Hello, world' SIMILAR TO '%([\-\,\.\s\?\!]?)world([\-\,\.\s\?\!]+)%', 
       'Hello, world!' SIMILAR TO '%([\-\,\.\s\?\!]?)world([\-\,\.\s\?\!]+)%' 

但第一场比赛返回false。

更新
要匹配的词:
你好,世界!
再见,世界。
嗨世界
这个世界太神奇了。

不匹配的词:
的HelloWorld
你好,世界。
这个问题被认为是世界范围的问题。

1 个答案:

答案 0 :(得分:1)

怎么样:

SELECT 'Hello, world' ~* '\yworld\y';

~*匹配正则表达式并且不区分大小写

\y匹配字边界

根据standard_conforming_strings参数的值,您可能必须使用2个反斜杠:

SELECT 'Hello, world' ~* '\\yworld\\y';