一、简介
1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。发展到后来,许多种工具都支持正则表达式(文本编辑器、文字处理软件、系统工具、数据库引擎,等等),不过,要想充分挖掘正则表达式的能力,还是应当将它作为编程语言的一部分。例如Java、JScript、Visual Basic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事实上,在一些用上述语言编写的程序中,正则表达式扮演了极其重要的角色。
二、语法
-
普通字符
-
数字:[0-9]
select '123' rlike '[0-9]' -- true
-
字母 : [a-z]、[A-Z]
select 'abc' rlike '[a-z]' -- true select 'ABC' rlike '[A-Z]' -- true select 'aBcD' rlike '[a-zA-Z]' -- true
-
汉字:[\u4e00-\u9fa5]
select '正则表达式' rlike '[\u4e00-\u9fa5]' -- true
-
下划线及没有特殊定义的标点符号
select 'abc_123' rlike '_' -- true select 'abc/123' rlike '/' -- true select 'abc 123' rlike ' ' -- true ...
-
-
常用的转译字符
转译字符 含义 \\n 换行 \\t 制表符 \\\\ \ 本身 \\( , \\[ , \\{ , \\? , \\+ , \^ , \\$ , \\* , \\. 等 ( , [ , { , ? , + , ^ , $ , * , . 等 -
标准字符集合
字符 含义 说明 \\d 数字合集 等效于[0-9] \\w 数字,字母,下划线合集 等效于[0-9a-zA-Z_] \\s 空格,换行符,制表符等空白字符集合 . 小数点可以以匹配除换行符之外的任意字符 类似于like的 _ -
边界字符
字符 例子 含义 ^ rlike ‘^a’ 匹配以a开头的字符串 $ rlike ‘0$’ 匹配以0结尾的字符串 -
量词
量词 | 含义 | 说明(举例) |
---|---|---|
{n} | 表达式重复n次 | 匹配任意四个字母:rlike ‘[a-zA-Z]{4}’ |
{n,} | 表达式至少重复n次 | 匹配任意六位及六位以上的数字:rlike ‘[0-9]{6,}’ |
{n,m} | 表达式至少重复n次,至多重复m次 | 匹配任意的二到四位的数字:rlike ‘\\d{2,4}’ |
? | 匹配表达式0次或1次 | 等效于 {0,1} |
+ | 表达式至少重复一次 | 等效于 {1,} |
* | 表达式不出现或重复任意次 | 等效于 {0,} |
-
自定义字符合集
[ ]方括号匹配方式,能够匹配方括号中任意一个字符:例1: rlike '[1GTU]' -- 匹配1或G或T或U 例2:rlike '[^abc]' -- 匹配除a,b,c外的任意字符 例3:rlike '[c-f]' -- 匹配c至f的任意小写字母 例4:rlike '[^1-3A-C]' -- 匹配除1到3,A到C之外的任意字符
-
项目中正则使用实例
在这里插入代码片