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

标签 regex postgresql postgresql-9.2

我有以下查询:

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

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

如何替换 \Q..\E

最佳答案

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

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

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

要简单地将 prefix[foo] 与具有现代语法的 PostgreSQL 风格的正则表达式匹配,这是有效的:

test=> show standard_conforming_strings ;
 standard_conforming_strings 
-----------------------------
 on
(1 row)

test=> select 'prefix[foo]' ~ 'prefix\[.+';
 ?column? 
----------
 t
(1 row)

关于regex - postgresql 中 regexp\Q...\E 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313964/

相关文章:

asp.net - 限制字符串长度的正则表达式

java - : a string should not contain any sequence of characters immediately followed by the same sequence? 的正则表达式示例是什么

sql - PostgreSQL 将数据从一个数据库复制/传输到另一个数据库

mysql - 从 postgresql 转储文件填充 MySQL 数据库

ruby-on-rails - 尝试使用 activerecord-postgis-adapter 构建数据库时未定义的方法

postgresql - 如何在 PostgreSQL 中使用 LIKE 语句在 WHERE 中使用 CAST 值?

linux - 无法在 Mac 上运行 postgresql(重启后)

regex - 期望中的正则表达式

java - 计算字符串中单词出现的次数

postgresql - 列名的问题在 PostgreSQL 中包含冒号