MySql中正则表达式的使用方法描述


Posted in PHP onJuly 30, 2008

正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如,正则表达式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(表示匹配)

PHP 相关文章推荐
新手学习PHP的一些基础知识分享
Jul 27 PHP
php引用地址改变变量值的问题
Mar 23 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
php自动跳转中英文页面
Jul 29 #PHP
PHP一些常用的正则表达式字符的一些转换
Jul 29 #PHP
php 全文搜索和替换的实现代码
Jul 29 #PHP
PHP中$_SERVER的详细参数与说明
Jul 29 #PHP
php include的妙用,实现路径加密
Jul 29 #PHP
php5编程中的异常处理详细方法介绍
Jul 29 #PHP
php intval的测试代码发现问题
Jul 27 #PHP
You might like
PHP与SQL注入攻击[三]
2007/04/17 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python字符串对其居中显示的方法
2015/07/11 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
python运行时间的几种方法
2016/06/17 Python
python3 shelve模块的详解
2017/07/08 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Pygame的程序开始示例代码
2020/05/07 Python
如何理解python对象
2020/06/21 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
应届专科生个人的自我评价
2014/01/05 职场文书
中学生期末评语
2014/02/03 职场文书
银行求职信怎么写
2014/05/26 职场文书
大学生就业自荐书
2014/06/16 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
python数字图像处理:图像的绘制
2022/06/28 Python