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

  












 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM