zoukankan      html  css  js  c++  java
  • Mysql(四)正则表达式

    一、正则表达式

           1、使用like可以进行不确定的查询(模糊查询),然而,模糊 查询的功能有限,当需要进行更加复杂的模式匹配时,可以 使用正则表达式来完成。 

            2、正则表达式可以对指定的字符串与模式之间执行模式匹配。  模式可以是普通的字符串,也可以是含有特殊意义字符的字  符串。 

           3、MySQL中,正则表达式使用regexprlike关键字。二者为同 义词。

           4、regexp左侧操作数为要匹配的字符串,而右侧操作数为匹配  模式。当左侧字符串能够成功匹配右侧的模式时,返回1  ( true),否则返回0( false)。 

           5、右侧操作数(模式)可以是简单的常量字符串,也可以含有 特殊意义的字符。当含有特殊意义字符时,可以进行功能非 常强大的匹配 。

    二、正则表达式可以含有以下特殊字符:
          ^ 从字符串开头进行匹配
          $ 匹配字符串结尾
          . 匹配任意一个字符
         ? 前面的字符出现0次或1次。
          + 前面的字符出现1次或多次。
         * 前面的字符出现0次或多次。
         () 表示一个整体。
          [] []内的任意一个字符进行匹配。如果含有”-”,则对字符 区间的任意字符进行匹配。 

          [^] 不含有[]内的所有字符或区间。
          | 匹配|分隔的任意一个字符。
         {m} {}前面的字符匹配m次。
         {m,n}{}前面的字符匹配mn次,包括边界值。

          {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$';
    

      












     


     

  • 相关阅读:
    面向对象的三大特征
    前端基础----CSS基础概要(四)
    前端基础----CSS概要(三)
    前端基础----CSS概要(二)
    前端基础----CSS基础概要(一)
    计算机基础----常用的快捷键(一)
    前端基础------HTML概要(一)
    计算机基础---常用的应用软件
    计算机的分类
    计算机基础---硬件的组成
  • 原文地址:https://www.cnblogs.com/liuwei6/p/7279542.html
Copyright © 2011-2022 走看看