php正则匹配js中变量_Postgresql 中的 正则表达式 模式匹配
参考链接:
PostgreSQL 模式匹配www.yiibai.com
1. like
string LIKE pattern [ESCAPE escape-character]
string NOT LIKE pattern [ESCAPE escape-character]
比较特别的地方:
在pattern里的下划线 (_)代表(匹配)任何单个字符; 而一个百分号(%)匹配任何零或更多个字符的序列。
LIKE模式匹配总是覆盖整个串。因此,要匹配在串内任何位置的序列,该模式必须以百分号
开头和结尾。
要匹配文本的下划线或者百分号,而不是匹配其它字符, 在pattern里相应的字符必须 前导逃
逸字符。缺省的逃逸字符是反斜线,但是你可以用ESCAPE子句指定一个不同的逃逸字符。
要匹配逃逸字符本身,写两个逃逸字符。
请注意反斜线在串文本里已经有特殊含义了,所以如果你写一个 包含反斜线的模式常量,那
你就要在 SQL 语句里写两个反斜线。 因此,写一个匹配单个反斜线的模式实际上要在语句
里写四个反斜线。 你可以通过用 ESCAPE 选择一个不同的逃逸字符 来避免这样;这样反斜
线就不再是 LIKE 的特殊字符了。 但仍然是字符文本分析器的特殊字符,所以你还是需要两
个反斜线。) 我们也可以通过写ESCAPE ''的方式不选择逃逸字符,这样可以有效地禁用逃逸
机制,但是没有办法关闭下划线和百分号在模式中的特殊含义。
关键字ILIKE可以用于替换LIKE, 它令该匹配根据活动区域成为大小写无关。这个不属于
SQL标准而是一个PostgreSQL扩展
操作符~~等效于LIKE, 而~~*对应ILIKE。 还有 !~~和!~~*操作符分别代表NOT LIKE和NOT
ILIKE。所有这些操作符都是PostgreSQL特有的。
2. SIMILAR TO正则表达式
string SIMILAR TO pattern [ESCAPE escape-character]
string NOT SIMILAR TO pattern [ESCAPE escape-character]
它和LIKE非常类似,只不过它使用 SQL 标准定义的正则表达式理解模式。 SQL 正则表达式是在LIKE标记和普通的正则表达式标记的奇怪的杂交。
类似LIKE,SIMILAR TO操作符只有在它的模式匹配整个串的时候才能成功;这一点和普通
的 正则表达式的行为不同,在普通的正则表达式里,模式匹配串的任意部分
SIMILAR TO使用_和%作为分别代表任意单个字符和任意串的通配符(这些可以比得上 POSIX 正则表达式里的.和.*)
除了这些从LIKE借用的功能之外,SIMILAR TO支持下面这些从 POSIX 正则表达式借用的 模
式匹配元字符:
• |表示选择(两个候选之一)。
• *表示重复前面的项零次或更多次。
• +表示重复前面的项一次或更多次。
• ?表示重复前面的项零次或一次。
• {m}表示重复前面的项刚好m次。
• {m,}表示重复前面的项m次或更多次。
• {m,n}表示重复前面的项至少m次并且不超过n次。
• 可以使用圆括号()把多个项组合成一个逻辑项。
• 一个方括号表达式[...]声明一个字符类,就像 POSIX 正则表达式一样。
注意点号(.)不是SIMILAR TO的一个元字符。
和LIKE一样,反斜线禁用所有这些元字符的特殊含义;当然我们也可以用ESCAPE指定一个
不同的逃逸字符。
带三个参数的substring,即substring(string from pattern for escape-character),提供了抽取一个匹配 SQL 正则表达式的子串的方法。
和SIMILAR TO一样,声明的模式必须匹配整个数据函数和操作符串,否则函数失败并返回空值。
为了标识在成功的时候应该返回的模式部分,模式 必须包含逃逸字符的两次出现,并且后面要跟上双引号(")。
匹配这两个标记之间的模式的文本将被返回。
substring('foobar' from '%#"o_b#"%' for '#') oob
substring('foobar' from '#"o_b#"%' for '#') NULL
3.POSIX正则表达式
正则表达式匹配操作符
和LIKE模式不一样的是,正则表达式允许匹配串里的任何位置,除非该正则表达式显式地挂接在串的开头或者结尾;
带两个参数的substring函数,即substring(string from pattern),提供了抽取一个匹配POSIX 正则表达式模式的子串的方法。如果没有匹配它返回空值,否则就是文本中匹配模式的那部分。
但是如果该模式包含任何圆括号,那么将返回匹配第一对子表达式(对应第一个左圆括号的) 的文本。
如果你想在表达式里使用圆括号而又不想导致这个例外,那么你可以在整个表达式外边放上一对圆括号。 如果你需要在想抽取的子表达式前有圆括号,参阅后文描述的非捕获性圆括号。
一些例子:
substring('foobar' from 'o.b') oob
substring('foobar' from 'o(.)b') o
regexp_replace函数提供了将匹配 POSIX 正则表达式模式的子串替换为新文本的功能。
语法格式: regexp_replace(source, pattern, replacement [, flags ])
如果没有匹配pattern,那么返回不加修改的source串;
replacement串可以包含n, 其中n是 1 到 9, 表明源串里匹配模式里第n个圆括号子表
达式的子串应该被插入;
并且它可以包含&表示应该插入匹配整个模式的子串;
如果你需要
放一个文字形式的反斜线在替换文本里,那么写;
regexp_match 函数返回从POSIX正则表达式模式首次匹配到字符串后捕获的子字符串的文本
数组;
语法是regexp_match(string, pattern [, flags ])
如果没有匹配,结果是NULL。如果找到匹配, 并且pattern不包含括起来的子表达式, 那么结果是包含匹配整个模式的子串的单元素文本数组;
如果找到匹配,并且pattern包含带括号的子表达式, 那么结果是一个文本数组,其中的第n个元素是匹配 pattern的括号括起来的第n 个子表达式的子字符串(不包括“非捕获”括号;详见下文);
flags参数是一个可选的文本字符串, 包含零个或多个单字母标志,用于更改函数的行为;
regexp_matches函数返回一组捕获的字符串的文本数组, 该字符串是通过将POSIX正则表达
式模式匹配到字符串而得到的;
语法是regexp_matches(string, pattern [, flags ])
果没有匹配, 则此函数不返回任何行,如果有一个匹配且没有给出g标志,则返回一行;
如果有N个匹配,并给出g标志,则返回N行。
每个返回的行都是一个文本数组,它包含整个匹配的子字符串或匹配 pattern的括号子表达式的子字符串,就像上面针对 regexp_match所描述的一样。
regexp_split_to_table把一个 POSIX 正则表达式模式当作一个定界符来分离一个串。
regexp_split_to_table(string, pattern [, flags ])
regexp_split_to_array函数的行为和regexp_split_to_table相同,不过regexp_split_to_array会把它的结果以一个text数组的形式返回。它的语法是regexp_split_to_array(string, pattern [, flags ])。这些参数和regexp_split_to_table的相同。
ELECT foo FROM
regexp_split_to_table('the quick brown fox jumps over the lazy dog', E's+')
AS foo;
foo
-------
the
quick
brown
fox
jumps
over
the
lazy
dog
(9 rows)
SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', E's+');
regexp_split_to_array
-----------------------------------------------
{the,quick,brown,fox,jumps,over,the,lazy,dog}
(1 row)
SELECT foo FROM regexp_split_to_table('the quick brown fox', E's*') AS foo;foo
-----
t
h
e
q
u
i
c
k
b
r
o
w
n
f
o
x
[sS]*?表示匹配任意字符,且只匹配一次,即懒惰匹配;
如果是[sS]*没有带?号,也表示匹配任意字符,但允许匹配任意次,即贪婪匹配。
4. 正则表达式细节
注意:一个量词不能紧跟在另外一个量词后面,例如**是非法的。量词不能作为表达式或者子表达式的开头,也不能跟在^或者|后面。
5.方括号表达式
方括号表达式是一个包围在[]中的字符列表;
如果列表以^开头,它匹配任意单个不在该列表参与部分中的字符;
想在列表中包含文本],可以让它做列表的首字符(如果使用了^,需要放在其后);
想在列表中包含文本-,可以让它做列表的首字符或者尾字符,或者一个范围的第二个端点;
想在列表中把文本-当做范围的起点, 把它用[.和.]包围起来,这样它就成为一个排序元素(见下文;
6.正则表达式逃逸
php正则匹配js中变量_Postgresql 中的 正则表达式 模式匹配相关推荐
- php正则匹配js中变量_PHP正则表达式核心技术 第4节 php查找匹配函数使用心得
作者:极客小俊 一个专注于web技术的80后 你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人! php中兼容Perl的正则表达式处理函数 在我们说php系统自带的正则处理函数之前,我们 ...
- php正则匹配函数字符串长度,PHP中preg_match函数正则匹配的字符串长度问题
PHP中preg_match函数正则匹配的字符串长度问题 发布于 2015-10-25 10:24:29 | 166 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: ...
- css中变量_CSS中的变量
css中变量 CSS | 变数 (CSS | Variables) CSS variables allow you to create reusable values that can be used ...
- python中变量,python中变量的概念
python中变量的概念 在python中,变量就是一种标识符, 它是数据的名字,更专业的理解,变量是内存中数据的引用, 编程语言里的变量和初中学习代数时的方程变量很相似. 前面学习数字类型,bool ...
- php正则匹配js中变量_PHP正则表达式核心技术完全详解 第12节 [附加知识] 断言匹配...
作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! 极客小俊@知乎,官方首发原创文章 博客: 极客小俊GeekerJun PHP正则中的断言 ...
- go的string正则匹配_基础知识 - Golang 中的正则表达式
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- php 正则匹配 %3e,在shell脚本中使用正则表达式
1)在Linuxshell脚本中使用正则表达式解析字符串的正确方法是什么? 包括正则表达式功能的工具包括sed.grep.awk.perl.python等等.即使是更新版本的bash也具有regex功 ...
- oracle正则匹配全部,sql – 返回Oracle中正则表达式的所有匹配项
您已经提供了数据样本,说明这是一行,但已将其显示为两个不同的行.所以这个例子基于你的话. -- Sample of data from your question + extra row for th ...
- Javascript正则匹配数字,中英文,中横线,下划线,utf-8中文
function check_string(nickname) { var reg = /^[A-Za-z0-9-_\u4e00-\u9fa5]{4,30}$/ ; if ...
最新文章
- CentOS7部署ELK5.2
- “简单”的消息队列与kafka
- Phpcms v9专题分类增加模板设置的方法
- python转义是什么意思_Python什么情况下会输出转义符
- 转dem_约会大作战:真那离开DEM社,欠着的500万就不用还了
- c 语言 宏 可变 参数,利用C可变参数和宏定义来实现自己的日志系统
- Android 实现应用升级方案(暨第三方自动升级服务无法使用后的解决方案)
- linux下安装fortran90教程,linux 安装fortran 90
- C++ QQ游戏 连连看外挂 内存挂入门
- 批量转换图片文件格式(将JPEG、PNG转成JPG)
- ps还原上一步快捷键_photoshop恢复上一步操作的快捷键是什么
- 玩转Java 8 Stream 系列二进阶(Collectors.mapping 、Collectors.reducing、Collectors.summarizingInt等)
- C语言度量代码质量常用指标,代码度量标准
- android仿美团外卖选择地址,Android仿美团地址选择
- nfc ntag21x ultralight 内存结构
- RHEL7升级内核版本
- 优秀的JavaScript模块是怎样炼成的
- 1990-1999年最强华语金曲TOP100
- 经济师人力资源方向备考信息
- 离散数学 (II) 习题 1