`

正则表达式在mysql中的一些应用

阅读更多

正则表达式是定义复杂查询的一个强有力的工具。

 
正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如,正则表达式hello只和字符串“hello”匹配。

一般的正则表达式使用了某些特殊的结构,所以它能匹配更多的字符串。

 

例如,正则表达式hello|word既能匹配字符串“hello”也能匹配字符串“word”。举一个更复杂一点的例子,正则表达式B[an]*s可以匹配字符串“Bananas”、“Baaaaas” 、“Bs”以及其他任何以B开头以s结尾的字符串,中间可以包括任意个a和任意个n的组合。

一个正则表达式中的可以使用以下保留字

 

^

所匹配的字符串以后面的字符串开头
mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配)
mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配)

 

$

所匹配的字符串以前面的字符串结尾
mysql> select "fono" REGEXP "^fono$"; -> 1(表示匹配)
mysql> select "fono" REGEXP "^fo$"; -> 0(表示不匹配)

 

.
匹配任何字符(包括新行)
mysql> select "fofo" REGEXP "^f.*"; -> 1(表示匹配)
mysql> select "fonfo" REGEXP "^f.*"; -> 1(表示匹配)

 

a*
匹配任意多个a(包括空串)
mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)

 

a+
匹配任意多个a(不包括空串)
mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配)

 

a?
匹配一个或零个a
mysql> select "Bn" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Ban" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Baan" REGEXP "^Ba?n"; -> 0(表示不匹配)

 

de|abc
匹配de或abc
mysql> select "pi" REGEXP "pi|apa"; -> 1(表示匹配)
mysql> select "axe" REGEXP "pi|apa"; -> 0(表示不匹配)
mysql> select "apa" REGEXP "pi|apa"; -> 1(表示匹配)
mysql> select "apa" REGEXP "^(pi|apa)$"; -> 1(表示匹配)
mysql> select "pi" REGEXP "^(pi|apa)$"; -> 1(表示匹配)
mysql> select "pix" REGEXP "^(pi|apa)$"; -> 0(表示不匹配)

 

(abc)*
匹配任意多个abc(包括空串)
mysql> select "pi" REGEXP "^(pi)*$"; -> 1(表示匹配)
mysql> select "pip" REGEXP "^(pi)*$"; -> 0(表示不匹配)
mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表示匹配)

 

{1}
{2,3}
这是一个更全面的方法,它可以实现前面好几种保留字的功能
a*
可以写成a{0,}
a+
可以写成a{1,}
a?
可以写成a{0,1}

 

{}内只有一个整型参数i,表示字符只能出现i次;
{}内有一个整型参数i,后面跟一个“,”,表示字符可以出现i次或i次以上;
{}内只有一个整型参数i,后面跟一个“,”,再跟一个整型参数j,表示字符只能出现i次以上,j次以下(包括i次和j次)。
其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255)。如果有两个参数,第二个必须大于等于第一个

 

[a-dX]
匹配“a”、“b”、“c”、“d”或“X”

 

[^a-dX]
匹配除“a”、“b”、“c”、“d”、“X”以外的任何字符。“[”、“]”必须成对使用

mysql> select "aXbc" REGEXP "[a-dXYZ]"; -> 1(表示匹配)
mysql> select "aXbc" REGEXP "^[a-dXYZ]$"; -> 0(表示不匹配)
mysql> select "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1(表示匹配)
mysql> select "aXbc" REGEXP "^[^a-dXYZ]+$"; -> 0(表示不匹配)
mysql> select "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1(表示匹配)
mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0(表示不匹配)

 

[[.characters.]]
表示比较元素的顺序。在括号内的字符顺序是唯一的。但是括号中可以包含通配符, 所以他能匹配更多的字符。举例来说:正则表达式[[.ch.]]*c匹配chchcc的前五个字符。

 

[=character_class=]
表示相等的类,可以代替类中其他相等的元素,包括它自己。例如,如果o和(+)是一个相等的类的成员,那么[[=o=]]、[[=(+)=]]和[o(+)]是完全等价的。

 

[:character_class:]
在括号里面,在[:和:]中间是字符类的名字,可以代表属于这个类的所有字符。

字符类的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、upper、cntrl、print和xdigit
mysql> select "justalnums" REGEXP "[[:alnum:]]+"; -> 1(表示匹配)
mysql> select "!!" REGEXP "[[:alnum:]]+"; -> 0(表示不匹配)

 

[[::]]
分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中的字符也不能是下划线。
mysql> select "a word a" REGEXP "[[::]]"; -> 1(表示匹配)
mysql> select "a xword a" REGEXP "[[::]]"; -> 0(表示不匹配)
mysql> select "weeknights" REGEXP "^(wee|week)(knights|nights)$"; -> 1(表示匹配)

分享到:
评论

相关推荐

    数据库正则表达式匹配查询

    正则表达式的介绍应用方式,各类正则表达式详解,数据库用正则表达式能更快捷的查询。

    mysql正则表达式(regexp和rlike)的搜索功能实例分析

    本文实例讲述了mysql正则表达式(regexp和rlike)的搜索功能。分享给大家供大家参考...使用正则表达式的优点是,不限于在like运算符中基于具有百分号(%)和下划线(_)的固定模式搜索字符串。 使用正则表达式,有更多的元

    PHP正则表达式基本语法和使用方法

    正则表达式(regular expression)是一种表示方式,最早在LINUX被当做一种搜索算法应用在编辑器中,后来被广泛应用,不仅PHP脚本支持正则表达式,Perl、C#、Java以及JavaScript和MySQL也对正则表达式支持。在PHP中...

    正则表达式去除中括号(符号)及里面包含的内容

    ps:下面看下利用正则表达式提取括号内内容 比如现在要提取 中华人们共和国,简称(中国) 这句话中括号里的“中国” import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { ...

    PHP和MySQL_Web开发_原书第4版 04_字符串操作与正则表达式

    PHP和MySQL_Web开发_原书第4版 04_字符串操作与正则表达式

    简述MySQL 正则表达式

    MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。 下表中的正则模式可应用于...

    基于MySQL—Tkinter—正则表达式—Tcp—线程的聊天应用程序

    用Tkinter做的界面,布局十分简单,账号使用正则进行限制,TCP进行通信,采用多线程运行服务端,MySQL存储用户信息,

    正则表达式的优化全面详解( 三江小渡)

    就是因为这样工具应用十分广泛,所以对这样的工具全面的进行优化策略总结是非常划算的,因为无论你是PHP、Perl、Python、C++、C#、Java等等语言的程序员,你都是有非常大可能用上Mysql、正则表达式这样的工具的。...

    IP 正则表达式验证

    今天学习了正则表达式,觉得非常实用,而且现在各种编程语言和应用软件如Word、MySQL等等也都内置了正则引擎。

    MySQL全面瓦解之查询的正则匹配详解

    同样的,它也支持其他正则表达式的匹配,我们在MySQL中使用 REGEXP 操作符来进行正则表达式匹配。用法和like相 似,但又强大很多,能够实现一些很特殊的、复杂的规则匹配。正则表达式使用REGEXP命令进行匹配时,如果...

    bionomia:Sinatra应用程序可从生物多样性发生数据中解析人物姓名,应用基本的正则表达式和启发式方法来消除歧义,并将这些出现记录作为可以由人们通过ORCID声明的实体

    Sinatra应用程序可从结构化的生物多样性发生数据中解析人物姓名,应用基本的正则表达式和启发式方法消除歧义,然后允许经过身份验证的用户通过声明他们的身份。 经过身份验证的用户还可以帮助具有ORCID或Wikidata...

    struts2+hibernate+spring源码

    将这数值弹出一个alert并且发信给指定的邮件地址 获取页面内所有地方的以"<< >>"为标示的这个符号代表书名号,获取之中的内容 使用正则表达式>> 功能点: 1)URL抓取页面。 2)正则表达式匹配。 3)邮件系统调用 请注意...

    零基础学PHP+MySQL源代码(最新)

    《零基础学PHP+MYSQL》共19章内容,包括PHP的基础知识和应用方法、PHP简介、PHP的安装和设置、PHP的语法、PHP常用函数说明、PHP简单应用实例、PHP数据库编程、Ajax、XML、正则表达式、PHP与MySQL综合应用实例等。...

    editplus 代码编辑器html c++ jsp css

    括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将...

    PHP+MySQL动态网站开发

    理论部分包括PHP技术概述和基本语法、字符串和正则表达式、数组和函数、文件和目录操作、PHP的异常处理机制、XML文件操作、Session和Cookie会话管理、Smarty模板引擎、Ajax技术和MySQL数据库。实战部分包括在线投票...

    PHP和MySQL Web应用开发核心技术 源码

    ·利用PHP正则表达式的功能强大的数据验证技术。 ·介绍计划Web应用程序,包括用户界面和用户管理。 ·提供关于保证Web应用程序安全性的系统化指南。 ·涵盖广泛的实现问题——包括国际化、错语处理、数据验证、调试...

    MySQL 速成课程,第二版

    使用比较、正则表达式、全文搜索等过滤数据 连接关系数据 创建和更改表 插入、更新和删除数据 利用存储过程和触发器的强大功能 使用视图和游标 管理事务处理 创建用户帐户并通过访问控制管理安全性

    regex101:regex101.com网站的跨平台(macOS,Linux和Windows)非官方的“离线”版本。 使用用户自己的数据库(任何受qt支持的后端-sqlite,mysql,postgresql等)存储表达式

    它将网站的副本嵌入到应用程序中,因此不需要Internet连接即可使用正则表达式。 其背后的动机是,当开发用于产品的正则表达式时,我经常发现自己一次又一次地打开网站,从而导致各种状态的许多选项卡淹没在网页的...

    PHP+MySQL动态网站开发.rar

    分别介绍了PHP 7的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与...

    Editplus 3[1].0

    括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将...

Global site tag (gtag.js) - Google Analytics