postgresql中regexp \ Q ... \ E的等价物是什么?

时间:2014-01-23 16:30:39

标签: regex postgresql postgresql-9.2

我有以下查询:

SELECT
   field
FROM
   myTable
WHERE
   field ~ '\\Qprefix[\\E.+'

找不到像prefix[foo]这样的值。

如何替换\Q..\E

1 个答案:

答案 0 :(得分:1)

这种带有\Q..\E不带引号的子字符串的正则表达式仅由PCRE支持,这在PostgreSQL中本身不可用。

如果您的程序通常必须处理此语法,则可以将PCRE支持作为扩展安装,如下所示:https://github.com/petere/pgpcre

另一方面,如果只有一个应该使用的正则表达式,首先 请注意'\\Qprefix[\\E.+'中的双反斜杠意味着PostgreSQL 9.1及更高版本的两个反斜杠,除非standard_conforming_strings显式切换到OFF。 为了对此设置不敏感,具有旧语法的文字应该以{{1​​}}为前缀。这在文档中的String Constants with C-style Escapes中有描述。

为了简单地将E与PostgreSQL风格的正则表达式与现代语法匹配,这可行:

prefix[foo]