在PostgreSQL中使用正则表达式

正则表达式匹配运算符

PostgreSQL中有一个称为正则表达式匹配运算符的特性。它可以用于无法用LIKE或ILIKE完全表达的模式。

演算子説明~正規表現に一致する。大文字小文字の区別あり。~*正規表現に一致する。大文字小文字の区別なし。!~正規表現に一致しない。大文字小文字の区別あり。!~*正規表現に一致しない。大文字小文字の区別なし。

~ 是基础。
~* 是对于 ~ 的大小写不敏感版本。
!~、!~* 分别表示 ~ 的否定和 ~* 的否定。

例結果'abc' ~ '^a'true'abc' ~* '^a'true'abc' ~ '^A'false'abc' ~* '^A'true'abc' !~ '^a'false'abc' !~* '^a'false'abc' !~ '^A'true'abc' !~* '^A'false

正则表达式替换

使用正则表达式进行字符串替换的函数。

使用正则表达式替换函数 `regexp_replace(string text, pattern text, replacement text [, flags text])`

在模式中,可以使用括号括起来的部分匹配到的部分作为替换。其中 \N 代表第N个括号的部分。在实际的替换中,需要使用双斜杠进行转义,例如 \\1。

主要的标志

フラグ説明i大文字小文字の区別をしないg最初のマッチだけでなく全てのマッチを置換

执行示例

例結果REGEXP_REPLACE('abcdeabcde', 'c.', 'X')abXeabcdeREGEXP_REPLACE('abcdeabcde', 'c.', 'X', 'g')abXeabXeREGEXP_REPLACE('ABCDEabcde', 'c.', 'X', 'g')ABCDEabXeREGEXP_REPLACE('ABCDEabcde', 'c.', 'X', 'ig')ABXEabXeREGEXP_REPLACE('abcdeabcde', 'b(.)d', E'Y\\1Z', 'g')aYcZeaYcZe

请参考此链接。

PostgreSQL 9.1.5文档 9.7.3版本。POSIX正则表达式。
PostgreSQL 9.1.5文档 4.1.2.2版本。使用C格式转义的字符串常量。

广告
将在 10 秒后关闭
bannerAds