在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格式转义的字符串常量。