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获取网络上文件
Oct 09 PHP
PHP与MySQL交互使用详解
Oct 09 PHP
?算你??的 PHP 程式大小
Dec 06 PHP
PHP数据类型的总结分析
Jun 13 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
PDO::inTransaction讲解
Jan 28 PHP
laravel-admin 中列表筛选方法
Oct 03 PHP
php 中的信号处理操作实例详解
Mar 04 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 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
大师制作的中短波矿石收音机
2020/04/02 无线电
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
Javascript this指针
2009/07/30 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Python补齐字符串长度的实例
2018/11/15 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
《草原》教学反思
2014/02/15 职场文书
总经理任命书
2014/03/29 职场文书
禁止酒驾标语
2014/06/25 职场文书
幼师小班个人总结
2015/02/12 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
清明节主题班会
2015/08/14 职场文书
教师节主题班会教案
2015/08/17 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
java中如何截取字符串最后一位
2022/07/07 Java/Android