pgpcre
PCRE/Perl风格的正则表达式支持
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgpcre | 0.20190509 | UTIL | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4230 | pgpcre | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | icu_ext fuzzystrmatch pg_trgm gzip bzip zstd http pg_net |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 0.20190509 | 1817161514 | pgpcre | - |
| RPM | PIGSTY | 0.20190509 | 1817161514 | pgpcre_$v | - |
| DEB | PGDG | 0.20190509 | 1817161514 | postgresql-$v-pgpcre | - |
构建
您可以使用 pig build 命令构建 pgpcre 扩展的 RPM 包:
pig build pkg pgpcre # 构建 RPM 包
安装
您可以直接安装 pgpcre 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pgpcre; # 当前活跃 PG 版本安装
pig ext install -y pgpcre -v 18 # PG 18
pig ext install -y pgpcre -v 17 # PG 17
pig ext install -y pgpcre -v 16 # PG 16
pig ext install -y pgpcre -v 15 # PG 15
pig ext install -y pgpcre -v 14 # PG 14
dnf install -y pgpcre_18 # PG 18
dnf install -y pgpcre_17 # PG 17
dnf install -y pgpcre_16 # PG 16
dnf install -y pgpcre_15 # PG 15
dnf install -y pgpcre_14 # PG 14
apt install -y postgresql-18-pgpcre # PG 18
apt install -y postgresql-17-pgpcre # PG 17
apt install -y postgresql-16-pgpcre # PG 16
apt install -y postgresql-15-pgpcre # PG 15
apt install -y postgresql-14-pgpcre # PG 14
创建扩展:
CREATE EXTENSION pgpcre;
用法
提供 pcre 数据类型以及用于 PCRE 模式匹配的运算符和函数。
基本匹配
SELECT 'foo' ~ pcre 'fo+'; -- true
SELECT 'bar' !~ pcre 'fo+'; -- true
SELECT 'foo' =~ pcre 'fo+'; -- true(Perl 风格运算符)
反转操作数顺序:
SELECT pcre 'fo+' ~ 'foo'; -- true
SELECT pcre 'fo+' ~ ANY(ARRAY['foo', 'bar']);
大小写不敏感匹配
SELECT 'FOO' ~ pcre '(?i)fo+'; -- true
提取匹配的字符串
SELECT pcre_match('fo+', 'foobar'); -- 'foo'
SELECT pcre_match('fo+', 'barbar'); -- NULL
提取捕获的子串
SELECT pcre_captured_substrings('(fo+)(b..)', 'foobar');
-- ARRAY['foo','bar']
SELECT pcre_captured_substrings('(a|(z))(bc)', 'abc');
-- ARRAY['a',NULL,'bc']
存储正则表达式
pcre 类型可以存储在表的列中。二进制形式包含已编译的正则表达式,与 PCRE 库版本关联。PCRE 库升级后,需要重新编译存储的值:
UPDATE my_table SET pcre_col = pcre_col::text::pcre;