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 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
以文本方式上传二进制文件的PHP程序
Oct 09 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
php格式化电话号码的方法
Apr 24 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
如何在PHP中使用数组
Jun 09 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 dirname功能及原理实例解析
2020/10/28 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python可视化实现代码
2019/01/15 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
大学毕业感言200字
2014/03/09 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
民主生活会主持词
2015/07/01 职场文书
小学副班长竞选稿
2015/11/21 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Django cookie和session的应用场景及如何使用
2021/04/29 Python
正则表达式拆分url实例代码
2022/02/24 Java/Android