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 无限分类的树类代码
Dec 03 PHP
php设置编码格式的方法
Mar 05 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
php实现文件上传基本验证
Mar 04 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
PHP反射基础知识回顾
Sep 10 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 常用函数库和一些实用小技巧
2009/01/01 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
JQUERY dialog的用法详细解析
2013/12/19 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python中的枚举类型示例介绍
2019/01/09 Python
python执行精确的小数计算方法
2019/01/21 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
什么是数组名
2012/05/10 面试题
期中考试后的反思
2014/02/08 职场文书
工作求职信
2014/07/04 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
小学教师自我评价
2015/03/04 职场文书
公司职员入党自传书
2015/06/26 职场文书
电工生产实习心得体会
2016/01/22 职场文书