Mysql(四)正則表達式

1、正則表達式java

       一、使用like能夠進行不肯定的查詢(模糊查詢),然而,模糊 查詢的功能有限,當須要進行更加複雜的模式匹配時,能夠 使用正則表達式來完成。 正則表達式

        二、正則表達式能夠對指定的字符串與模式之間執行模式匹配。  模式能夠是普通的字符串,也能夠是含有特殊意義字符的字  符串。 spa

       三、MySQL中,正則表達式使用regexprlike關鍵字。兩者爲同 義詞。regexp

       四、regexp左側操做數爲要匹配的字符串,而右側操做數爲匹配  模式。當左側字符串可以成功匹配右側的模式時,返回1  ( true),不然返回0( false)。 blog

       五、右側操做數(模式)能夠是簡單的常量字符串,也能夠含有 特殊意義的字符。當含有特殊意義字符時,能夠進行功能非 常強大的匹配 。字符串

2、正則表達式能夠含有如下特殊字符:
      ^ 從字符串開頭進行匹配
      $ 匹配字符串結尾
      . 匹配任意一個字符
     ? 前面的字符出現0次或1次。
      + 前面的字符出現1次或屢次。
     * 前面的字符出現0次或屢次。
     () 表示一個總體。
      [] []內的任意一個字符進行匹配。若是含有」-」,則對字符 區間的任意字符進行匹配。 
class

      [^] 不含有[]內的全部字符或區間。
      | 匹配|分隔的任意一個字符。
     {m} {}前面的字符匹配m次。
     {m,n}{}前面的字符匹配mn次,包括邊界值。
select

      {m,}{}前面的字符匹配m到屢次。 gc


說明:
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$';
相關文章
相關標籤/搜索