正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。

MySQL仅支持多数正则表达式实现的一个很小的子集。

----------------------

9.2.1  基本字符匹配

REGEXP后所跟的东西作为正则表达式处理。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name; ------返回------
+------------------------+
|prod_name|
+------------------------+
|JetPack1000|
+------------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name; ------返回------
+------------------------+
|prod_name|
+------------------------+
|JetPack1000|
+------------------------+

.  表示匹配任意一个字符。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
|prod_name|
+-------------------------+
|JetPack1000|
|JetPack2000|
+-------------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
|prod_name|
+-------------------------+
|JetPack1000|
|JetPack2000|
+-------------------------+

MySQL中的正则表达式匹配不区分大小写。

为区分大小写,可使用BINARY关键字。

如:WHERE prod_name REGEXP BINARY 'JetPack .000'

9.2.2  进行OR匹配

为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。

| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
|prod_name|
+----------------------+
|JetPack1000|
|JetPack2000|
+----------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
|prod_name|
+----------------------+
|JetPack1000|
|JetPack2000|
+----------------------+

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

[ ]是另外一种形式的OR语句,[123] Ton  就是  [1 | 2 | 3] Ton 的缩写。

^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'[123] Ton'
ORDER BY prod_name; -------------返回------------ +--------------------+
|prod_name|
+--------------------+
|1ton anvil|
|2ton anvil|
+--------------------+

匹配范围

[0123456789] 或 [0-9] 将匹配数字0到9

[a-z] 匹配任意字母符号

SELECT prod_name
FROM products
WHERE prod_name REGEXP'[1-5] Ton'
ORDER BY prod_name; ----------返回----------- +-------------------+
|prod_name|
+-------------------+
|.5ton anvil|
|1ton anvil|
|2ton anvil|
+-------------------+

匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

SELECT prod_name
FROM vendors
WHERE vend_name REGEXP'\\.'
ORDER BY vend_name; -------------返回------------- +----------------------+
|vend_name|
+----------------------+
|Furball Inc.|
+----------------------+

\\  也用来引用元字符(具有特殊意义的字符)

\\f    换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表

匹配字符类

[:a;num:] 任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9]) [:a;num:] 任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例

元字符 说明
*0个或多个匹配
+1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0,1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255) 元字符 说明
*0个或多个匹配
+1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0,1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255)

以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'\\([0-9] sticks?\\)'
ORDER BY prod_name; ------------返回------------ +-----------------------+
|prod_name|
+-----------------------+
|TNT (1stick)|
|TNT (5sticks)|
+-----------------------+

匹配连在一直的4位数字:WHERE prod_name REGEXP '[[:digit:]]{4}'

定位符

^文本的开始
$ 文本的末尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
SELECT prod_name
FROM products
WHERE prod_name REGEXP'^[0-9\\.]'
ORDER BY prod_name; -----------返回---------- +---------------------+
|prod_name|
+---------------------+
|.5ton anvil|
|1ton anvil|
|2ton anvil|
+---------------------+

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。

LIKE 匹配整个串,而REGEXP匹配子串。

简单的正则表达式测试  可以在不使用数据库的情况下用SELECT来测试正则表达式。

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测

试表达式,并试验它们。相应的语法如下:

SELECT 'hello' REGEXP '[0-9]'

这个例子返回0(因为文本hello中没有数字)。

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。

MySQL仅支持多数正则表达式实现的一个很小的子集。

----------------------

9.2.1  基本字符匹配

REGEXP后所跟的东西作为正则表达式处理。


SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name; ------返回------
+------------------------+
|prod_name|
+------------------------+
|JetPack1000|
+------------------------+

.  表示匹配任意一个字符。


SELECT prod_name
FROM products
WHERE prod_name REGEXP'.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
|prod_name|
+-------------------------+
|JetPack1000|
|JetPack2000|
+-------------------------+

MySQL中的正则表达式匹配不区分大小写。

为区分大小写,可使用BINARY关键字。

如:WHERE prod_name REGEXP BINARY 'JetPack .000'

9.2.2  进行OR匹配

为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。

| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。


SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
|prod_name|
+----------------------+
|JetPack1000|
|JetPack2000|
+----------------------+

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

[ ]是另外一种形式的OR语句,[123] Ton  就是  [1 | 2 | 3] Ton 的缩写。

^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。

代码

SELECT prod_name
FROM products
WHERE prod_name REGEXP'[123] Ton'
ORDER BY prod_name; -------------返回------------ +--------------------+
|prod_name|
+--------------------+
|1ton anvil|
|2ton anvil|
+--------------------+

匹配范围

[0123456789] 或 [0-9] 将匹配数字0到9

[a-z] 匹配任意字母符号

代码

SELECT prod_name
FROM products
WHERE prod_name REGEXP'[1-5] Ton'
ORDER BY prod_name; ----------返回----------- +-------------------+
|prod_name|
+-------------------+
|.5ton anvil|
|1ton anvil|
|2ton anvil|
+-------------------+

匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

代码

SELECT prod_name
FROM vendors
WHERE vend_name REGEXP'\\.'
ORDER BY vend_name; -------------返回------------- +----------------------+
|vend_name|
+----------------------+
|Furball Inc.|
+----------------------+

\\  也用来引用元字符(具有特殊意义的字符)

匹配字符类


[:a;num:]    任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例


元字符              说明
*0个或多个匹配
+1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0,1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255)

以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。

代码

SELECT prod_name
FROM products
WHERE prod_name REGEXP'\\([0-9] sticks?\\)'
ORDER BY prod_name; ------------返回------------ +-----------------------+
|prod_name|
+-----------------------+
|TNT (1stick)|
|TNT (5sticks)|
+-----------------------+

匹配连在一直的4位数字:WHERE prod_name REGEXP '[[:digit:]]{4}'

定位符

代码

SELECT prod_name
FROM products
WHERE prod_name REGEXP'^[0-9\\.]'
ORDER BY prod_name; -----------返回---------- +---------------------+
|prod_name|
+---------------------+
|.5ton anvil|
|1ton anvil|
|2ton anvil|
+---------------------+

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。

LIKE 匹配整个串,而REGEXP匹配子串。

简单的正则表达式测试  可以在不使用数据库的情况下用SELECT来测试正则表达式。

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测

试表达式,并试验它们。相应的语法如下:

SELECT 'hello' REGEXP '[0-9]'

这个例子返回0(因为文本hello中没有数字)。

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。

MySQL仅支持多数正则表达式实现的一个很小的子集。

----------------------

9.2.1  基本字符匹配

REGEXP后所跟的东西作为正则表达式处理。

 SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name; ------返回------
+------------------------+
|prod_name|
+------------------------+
|JetPack1000|
+------------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name; ------返回------
+------------------------+
|prod_name|
+------------------------+
|JetPack1000|
+------------------------+


 

.  表示匹配任意一个字符。

 
SELECT prod_name
FROM products
WHERE prod_name REGEXP'.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
|prod_name|
+-------------------------+
|JetPack1000|
|JetPack2000|
+-------------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
|prod_name|
+-------------------------+
|JetPack1000|
|JetPack2000|
+-------------------------+

MySQL中的正则表达式匹配不区分大小写。

为区分大小写,可使用BINARY关键字。

如:WHERE prod_name REGEXP BINARY 'JetPack .000'

9.2.2  进行OR匹配

为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。

| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。

 SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
|prod_name|
+----------------------+
|JetPack1000|
|JetPack2000|
+----------------------+ SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
|prod_name|
+----------------------+
|JetPack1000|
|JetPack2000|
+----------------------+

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

[ ]是另外一种形式的OR语句,[123] Ton  就是  [1 | 2 | 3] Ton 的缩写。

^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'[123] Ton'
ORDER BY prod_name; -------------返回------------ +--------------------+
|prod_name|
+--------------------+
|1ton anvil|
|2ton anvil|
+--------------------+

匹配范围

[0123456789] 或 [0-9] 将匹配数字0到9

[a-z] 匹配任意字母符号

匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

SELECT prod_name
FROM vendors
WHERE vend_name REGEXP'\\.'
ORDER BY vend_name;

\\  也用来引用元字符(具有特殊意义的字符)

匹配字符类

[:a;num:] 任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9]) [:a;num:] 任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例


元字符 说明
*0个或多个匹配
+1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0,1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255)

以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。

SELECT prod_name
FROM products
WHERE prod_name REGEXP'\\([0-9] sticks?\\)'
ORDER BY prod_name; ------------返回------------ +-----------------------+
|prod_name|
+-----------------------+
|TNT (1stick)|
|TNT (5sticks)|
+-----------------------+

匹配连在一直的4位数字:WHERE prod_name REGEXP '[[:digit:]]{4}'

定位符

SELECT prod_name
FROM products
WHERE prod_name REGEXP'^[0-9\\.]'
ORDER BY prod_name; -----------返回---------- +---------------------+
|prod_name|
+---------------------+
|.5ton anvil|
|1ton anvil|
|2ton anvil|
+---------------------+

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。

LIKE 匹配整个串,而REGEXP匹配子串。

简单的正则表达式测试  可以在不使用数据库的情况下用SELECT来测试正则表达式。

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测

试表达式,并试验它们。相应的语法如下:

SELECT 'hello' REGEXP '[0-9]'

这个例子返回0(因为文本hello中没有数字)。

 

MySQL正则表达式的更多相关文章

  1. MySql 正则表达式简介及使用

    MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...

  2. 二十二、MySQL 正则表达式

    MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正 ...

  3. mysql正则表达式及应用

    mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...

  4. DB-MySQL:MySQL 正则表达式

    ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同 ...

  5. MySQL 正则表达式

    介绍 正则表达式用来描述或者匹配符合规则的字符串.它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配:正则表达式需要使用REGEXP命令,匹配上返回"1&qu ...

  6. 使用MySQL正则表达式查询

    MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. REGEXP后所跟的东西作为正则表达式处理. 代码 SELECT prod_name FR ...

  7. MySQL正则表达式初步

    如果想要了解完整的MySQL手册, 请访问: MySQL 5.1参考手册 你还可以学习: MySQL学习精粹 我们知道,在SQL之中,可以用 like 这个谓词(表达式) 来进行模糊检索,并支持 %, ...

  8. mysql 正则表达式问号

    MySQL 中,用正则表达式匹配?,需要使用两个转义字符   \\? 因使用一个被坑了很久.

  9. MySQL正则表达式 REGEXP详解

    在开始这个话题之前我们首先来做一个小实验,比较一下REGEXP和Like他们两个哪个效率高,如果效率太低,我们就没有必要做过多的研究了,实验的代码如下:<?phpRequire("co ...

随机推荐

  1. CSRF token 无法被验证. ----Yii连接数据库后数据库错误日志报错

    CSRF token 无法被验证. 我使用的是mongodb+ yii1.1 What is CSRF, please see the details here.  http://en.wikiped ...

  2. WF2013Low Power芯片

    Description     有n个机器,每个机器有2个芯片,每个芯片可以放k个电池.     每个芯片能量是k个电池的能量的最小值.     两个芯片的能量之差越小,这个机器就工作的越好.     ...

  3. Android之mtklog分析

    Android之mtklog分析 [海外场测反馈][xxx]动态测试时对比机xxxx拨打测试机xxxxx自动挂断电话 工作中遇到一个掉话的问题,需要分析log,log比较大,我也没法上传,就简答的讲讲 ...

  4. 在重新生成解决方案时,出现的错误:无法将文件“obj\x86\Debug\*.exe”复制到“obj\Debug\*.exe”。文件正由另一进程使用,因此该进程无法访问此文件

    此例是VS2010的CS项目. 在重新生成解决方案时,出现的错误. 解决步骤:先关闭解决方案,再在项目文件下的bin\Debug\*.exe删除这类之前生成得.exe文件,再在VS2010下重新生成.

  5. HTML5 十大新特性(四)——Canvas绘图

    H5引入了canvas标签,默认是一个300*150的inline-block.canvas的宽高只能用它自身的width和height属性来指定,而不能使用css样式中的width.height. ...

  6. SQL Server Replication issues-the row was not found at the subscriber end

    Issue type: 1.find out the number 0x0006F18F00006082002300000000 from publication end. 2.use below s ...

  7. linux工具apt、yum和dnf运用

      首先,说明一下我的环境:ubuntu16.04. 什么是APT: 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu ...

  8. Java注释@interface的用法【转】

    Java用  @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类.@Override,@Deprecated,@SuppressWarnings为 ...

  9. JAVA字符串05之课程问题解决

    (一)古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:请编写一个程序,使用上述算法加密或解密用户输入的英文字串. 1.设计思想:首先选择是加密字符串还是解密字符串,两种算法相似.如果要加密字符串 ...

  10. 网站第三方登陆(一) QQ登陆

    QQ 登陆是指,通过qq的用户名和密码,登录网站,不需要注册,网站的用户名和密码.如下图 一旦你授权了,就可以进入网站了,要实现这个效果 1.去qq互联平台(http://connect.qq.com ...