1、正則表達式java
一、使用like能夠進行不肯定的查詢(模糊查詢),然而,模糊 查詢的功能有限,當須要進行更加複雜的模式匹配時,能夠 使用正則表達式來完成。 正則表達式
二、正則表達式能夠對指定的字符串與模式之間執行模式匹配。 模式能夠是普通的字符串,也能夠是含有特殊意義字符的字 符串。 spa
三、MySQL中,正則表達式使用regexp或rlike關鍵字。兩者爲同 義詞。regexp
四、regexp左側操做數爲要匹配的字符串,而右側操做數爲匹配 模式。當左側字符串可以成功匹配右側的模式時,返回1 ( true),不然返回0( false)。 blog
五、右側操做數(模式)能夠是簡單的常量字符串,也能夠含有 特殊意義的字符。當含有特殊意義字符時,能夠進行功能非 常強大的匹配 。字符串
2、正則表達式能夠含有如下特殊字符:
^ 從字符串開頭進行匹配
$ 匹配字符串結尾
. 匹配任意一個字符
? 前面的字符出現0次或1次。
+ 前面的字符出現1次或屢次。
* 前面的字符出現0次或屢次。
() 表示一個總體。
[] 對[]內的任意一個字符進行匹配。若是含有」-」,則對字符 區間的任意字符進行匹配。 class
[^] 不含有[]內的全部字符或區間。
| 匹配|分隔的任意一個字符。
{m} 對{}前面的字符匹配m次。
{m,n}對{}前面的字符匹配m到n次,包括邊界值。 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$';