Mysql(四)正则表达式
一、正则表达式
1、使用like可以进行不确定的查询(模糊查询),然而,模糊 查询的功能有限,当需要进行更加复杂的模式匹配时,可以 使用正则表达式来完成。
2、正则表达式可以对指定的字符串与模式之间执行模式匹配。 模式可以是普通的字符串,也可以是含有特殊意义字符的字 符串。
3、MySQL中,正则表达式使用regexp或rlike关键字。二者为同 义词。
4、regexp左侧操作数为要匹配的字符串,而右侧操作数为匹配 模式。当左侧字符串能够成功匹配右侧的模式时,返回1 ( true),否则返回0( false)。
5、右侧操作数(模式)可以是简单的常量字符串,也可以含有 特殊意义的字符。当含有特殊意义字符时,可以进行功能非 常强大的匹配 。
二、正则表达式可以含有以下特殊字符:
      ^ 从字符串开头进行匹配
      $ 匹配字符串结尾
      . 匹配任意一个字符
     ? 前面的字符出现0次或1次。
      + 前面的字符出现1次或多次。
     * 前面的字符出现0次或多次。 
     () 表示一个整体。 
      [] 对[]内的任意一个字符进行匹配。如果含有”-”,则对字符 区间的任意字符进行匹配。
[^] 不含有[]内的所有字符或区间。 
      | 匹配|分隔的任意一个字符。 
     {m} 对{}前面的字符匹配m次。
     {m,n}对{}前面的字符匹配m到n次,包括边界值。
{m,}对{}前面的字符匹配m到多次。
说明:
m需要小于等于n。
,之间不能存在空格。
/*正则表达式
字符串 regexp 模式
正式表达式可以进行模式的匹配,如果左边字符串可以匹配右边
的模式,返回1(true),否则返回0(false)。
模式可以是常规的字符串,也可以含有特殊字符(可以进行复杂的匹配)。
*/
select 'abc' regexp 'ab';
select 'abc' regexp 'bc';
#^从开头进行匹配
select 'abc' regexp '^ab';
select 'abc' regexp '^bc';
#$匹配字符串末尾
select 'abc' regexp 'ab$';
select 'abc' regexp 'bc$';
#^与$联合使用
select 'abc' regexp '^abc$';
#.匹配任意一个字符
select 'abc' regexp '^a.c$';
select 'ac' regexp '^a.c$';
#?匹配前面字符0次或1次。
select 'abc' regexp '^ab?c$'
select 'ac' regexp '^ab?c$'
select 'abbc' regexp '^ab?c$'
#+匹配前面字符1次或多次。
select 'abc' regexp '^ab+c$'
select 'abbbc' regexp '^ab+c$'
select 'ac' regexp '^ab+c$'
#*匹配前面字符0次或多次
select 'ac' regexp '^ab*c$'
select 'abc' regexp '^ab*c$'
select 'abbbbc' regexp '^ab*c$'
#()表示一个整体。
select 'ac' regexp '^(ab)?c$';
select 'c' regexp '^(ab)?c$';
select 'ababc' regexp '^(ab)?c$';
select 'ababc' regexp '^(ab)+c$';
#[]对其中的任意一个字符进行匹配,仅能匹配一个字符。
select 'abc' regexp '^a[abcdefg]c$';
#仅能匹配一个字符
select 'abgc' regexp '^a[abcdefg]c$';
#[]内可以使用-表示一个区间,表示匹配区间内的任意一个字符。
#包括区间的边界。
select 'abc' regexp '^a[a-k]c$';
select 'a3c' regexp '^a[0-5]c$';
#如果[]内需要匹配],则]必须紧跟在[之后。
select 'a]c' regexp '^a[ab]c]c$'
select 'a]c' regexp '^a[]abc]c$'
#如果[]内需要匹配-,则-必须出现在[]的两端(开始或结束)。
select 'a-c' regexp '^a[a-kx]c$'
select 'a-c' regexp '^a[-akx]c$'
select 'a-c' regexp '^a[akx-]c$'
#[^] 不含有区间内的任意一个字符
select 'abdsfsdf' regexp '^[^0-9]+$'
select 'abd5sfsdf' regexp '^[^0-9]+$'
#| 匹配|分隔的任意一个字符
select 'abc' regexp '^a(b|c|d)c$'
select 'adc' regexp '^a(b|c|d)c$'
select 'abc' regexp '^a[b-d]c$'
#{m} 匹配前面的字符m次
select 'abc' regexp '^ab{3}c$'
select 'abbbc' regexp '^ab{3}c$'
#{m,n} 匹配前面的字符m次到n次,包含m与n。
select 'abc' regexp '^ab{2,5}c$'
select 'abbbc' regexp '^ab{2,5}c$'
#{m,} 匹配前面的字符m次或更多次。
select 'abc' regexp '^ab{2,}c$'
select 'abbc' regexp '^ab{2,}c$'
select 'abbbbbbc' regexp '^ab{2,}c$'
#?,*,+也可以使用{m,n}实现。
select 'abc' regexp '^ab?c$'
select 'abc' regexp '^ab{0,1}c$';
select 'abc' regexp '^ab+c$'
select 'abc' regexp '^ab{1,}c$';
select 'abc' regexp '^ab*c$'
select 'abc' regexp '^ab{0,}c$';
#{m,n} m需要小于等于n
select 'abc' regexp '^ab{1,0}c$';
#{m,n}不要含有空格
select 'abc' regexp '^ab{0 , 1}c$';
Mysql(四)正则表达式的更多相关文章
- mysql中正则表达式的使用
		
mysql中正则表达式的性能要高于like,所以这里总结一下正则表达式的使用. 正则表达式的模式及其含义: 下面举例说明其用法: 建表student: create table student(id ...
 - MYSQL使用正则表达式过滤数据
		
一.正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串.例如:select * from wp_posts where post_name REGEXP ...
 - MySql 使用正则表达式
		
MySql 用where 子句对正则表达式提供了支持,允许你指定正则表达式,注意mysql仅支持多数正则表达式实现的一个很小的子集. 1.基本字符匹配: SELECT prod_name FROM p ...
 - spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号)
		
spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号) 比如我原来有,spring-boot-user微服务,后台进行迭代更新,另外其了一个微服务: sprin ...
 - Mysql 四种事务隔离介绍以及锁机制
		
还有很多不太懂,这里收集几份大佬文章“飞机票”,待我整理好了,再好好写一篇文章吧. MySQL的四种事务隔离级别 https://www.cnblogs.com/huanongying/p/70215 ...
 - mysql四-1:单表查询
		
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...
 - mysql四-1:单表查询
		
一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...
 - Mysql(四)-1:单表查询
		
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...
 - Python、mysql四-1:单表查询
		
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...
 
随机推荐
- 20155211 Exp5 MSF基础应用
			
20155211 Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit:漏洞攻击.一个exploit程序肯定会触发系统的一个或多个 ...
 - WPF之Manipulation
			
原文:WPF之Manipulation 需求:现,在窗口下有一个StackPanel控件. 1.可以拖动. 2.可以展开及收缩(不仅仅可以拖动还可以点击) 3.窗口向坐标轴一样分四个象限,在不同的区域 ...
 - In-Memory:内存优化表的DMV
			
SQL Server 在执行查询时,自动将活动的相关信息保存在内存中,这些活动信息称作DMV(Dynamic Management View),DMV记录SQL Server实例级别上的活动信息.由于 ...
 - C#字符串截取、获取当前电脑时间、判断输入日期对错       随手记
			
字符串截取:这个就当复习了,看意见就可以 //身份证生日截取 //Console.WriteLine("请输入18位身份证号:"); //string x = Console.Re ...
 - 软件测试--w模型
			
W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...
 - abcdocker 的博客
			
技术参考总结 abcdocker 的博客 09月 3 篇 20日 Centos7 图形化创建KVM 10日 Nginx 代理Google 进行*** 10日 mac 安装装逼神器cmatrix 08月 ...
 - LeetCode 638 Shopping Offers
			
题目链接: LeetCode 638 Shopping Offers 题解 dynamic programing 需要用到进制转换来表示状态,或者可以直接用一个vector来保存状态. 代码 1.未优 ...
 - 第一个Sprint冲刺总结(事后诸葛亮及团队贡献分)
			
第一个Sprint冲刺总结(事后诸葛亮及团队贡献分) 组员:欧其锋 廖焯燊 林海信 何武鹏 第一阶段的最终燃尽图如下: 2.事后诸葛亮: 3.团队贡献分: 欧其锋:22 林海信:21 何武鹏:19 ...
 - 关于vs2013进行单元测试
			
安装vs的过程就不多说了,做为一个学计算机的学生十基本技能. 第一步建立新工程.使用c#语言, 第二步,建立一个类.输入要测试的代码 第三步 建立一个类 第四步 运行测试
 - JDBC学习笔记——PreparedStatement的使用
			
PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...