一,LIKE
string LIKE pattern [ESCAPE escape-character]
string NOT LIKE pattern [ESCAPE escape-character]
如果pattern不包含百分号或者下划线,那么该模式只代表它本身;这时候LIKE的行为就像等号操作符。 在pattern里的下划线(_)匹配任何单个字符;而一个百分号(%)匹配零或多个任何字符。
1. 关键字ILIKE可以用于替换LIKE, 令该匹配就当前的区域设置是大小写无关的。这个特性不是SQL标准, 是PostgreSQL扩展。
my test2. 操作符~~等效于LIKE,而~~*等效于ILIKE。 还有!~~和!~~*操作符分别 代表NOT LIKE和NOT ILIKE。所有这些操作符都是PostgreSQL特有的。
my test二,SIMILAR TO正则表达式
string SIMILAR TO pattern [ESCAPE escape-character]
string NOT SIMILAR TO pattern [ESCAPE escape-character]
SIMILAR TO支持下面这些从 POSIX 正则表达式借用的模式匹配元字符:
*表示重复前面的项零次或更多次
+表示重复前面的项一次或更多次
? 表示重复前面的项零或一次。
实例1:
my test实例2:
my test三, POSIX正则表达式
正则表达式是一个字符序列,它是定义一个字符串合集(一个正则合集)的缩写。如果一个字符串是正则表达式描述的正则集合中的一员时,我们就说这个字符串匹配改正则表达式。和like一样,模式字符准确地匹配字符串字符,除非在正则表达式语言里有特殊字符(不过正则表达式用的特殊字符和like用的不同)。和like不一样的是,正则表达式可以匹配字符串里的任何位置,除非该正则表达式明确地描述在字符串开头或结尾。
my test my test两个参数的substring(stringfrom pattern)函数提供了从字符串中抽取一个 匹配 POSIX 正则表达式模式的子字符串的方法。如果没有匹配它返回 NULL , 否则就是文本中匹配模式的那部分。
my test但是如果该模式包含任何圆括弧,那么将返回匹配第一对子表达式
my testregexp_replace(source, pattern, replacement [,flags])
提供了将匹配POSIX正则表达式模式的子字符串替换为新文本的功能。如果没有匹配pattern的子字符串,那么返回不加修饰的source字符串。如果有匹配,则返回的source字符串里面的对应子字符串,将被replacement字符串替换掉。
my testreplacement字符串可以包含\n,这里的n是1到9,表明源字符串中匹配第n个圆括弧子表达式的部分将插入在该位置,并且它可以包含\&表示应该插入匹配整个模式的字符串,如果你需要放一个文本反斜杠在替换文本里,那么写\\(和通常一样,几点在文本常量字符串里写双反斜杠)。
my test可选的flags参数包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。
my testregexp_matches(string, pattern [, flags])
regexp_matches函数返回一个所有匹配POSIX正则表达式的获取子串结果的text数组。这个函数可以返回0行,1行或多行。如果模式包含没有括号的子表达式,则每行返回的是单元素的文本数组,其中包含的子串想匹配整个模式。如果模式包含括号的子表达式,函数返回一个文本数组,n的元素是子串匹配n括号子表达式内的模式。参数flags是一个选项text字符串,含有0或者更多字母标记类改变函数行为。
my test如果pattern没有匹配,则返回0行。
my test参数flags是一个选项text字符串,含有0或者更多字母标记类改变函数行为。
my testregexp_split_to_table(string, pattern [, flags])
regexp_split_to_table函数使用POSIX正则表达式作为分隔符,分隔字符串。如果没有匹配pattern,函数将返回string。如果有至少一个匹配,每个匹配返回从最后一个匹配结束(或者字符串开头)到匹配开始的文本。当没有更多匹配,返回最后一个匹配的结束到字符串的结尾的文本。flags参数是一个选项text字符串,含有0或者更多单字符标记来改变函数行为。
regexp_split_to_array(string, pattern [,flags])函数与regexp_split_to_table相同
实例1:
my test实例2:
my test实例3:
my test文章参考:https://www.php.cn/manual/view/20344.html
正则表达式太诡异了,完全理解不了原理,只能用一用
网友评论