一、基本字符匹配git
1)檢索列prod_name包含文本1000的全部行:正則表達式
select prod_name from products where prod_name REGEXP '1000' order by prod_name;api
2).是正則表達式語言中一個特殊的字符,它表示匹配任意一個字符:spa
select prod_name from products where prod_name REGEXP '.000' order by prod_name;it
3)LIKE和REGEXP之間重要差異:class
select prod_name from products where prod_name LIKE '1000' order by prod_name;select
select prod_name from products where prod_name REGEXP '1000' order by prod_name;語言
LIKE匹配整個列,若是被匹配的文本在列值中出現,LIKE將不會找到它,相應的行也不被返回(除非使用通配符)。而REGEXP在列值內進行匹配,若是被匹配的文本在列值中出現,REGEXP將會找到它,相應的行將被返回。集合
二、進行OR匹配di
select prod_name from products where prod_name REGEXP '1000|2000' order by prod_name;
使用正則表達式1000|2000。|爲正則表達式OR的操做符,它表示匹配其中之一。
三、匹配幾個字符之一
select prod_name from products where prod_name REGEXP '[123] Ton' order by prod_name;
[123]定義一組字符,它的意思是匹配1或2或3。[]是另外一種形式的OR語句,事實上,正則表達式[123]Ton爲[1|2|3]Ton的縮寫。
四、匹配範圍
select prod_name from products where prod_name REGEXP '[1-5] Ton' order by prod_name;
[1-5]定義一個範圍,這個表達式意思是匹配1到5。
五、匹配特殊字符
爲了匹配特殊字符,必須用\\爲前導。\\-表示查找-,\\.表示查找.。
select vend_name from vend_name REGEXP '\\.' order by vend_name;
\\.匹配.,這種處理就是所謂的轉義(escaping),正則表達式內具備特殊意義的全部字符都必須以這種方式轉義。
六、匹配字符類
[:alnum:] 任意字符和數字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和製表(同[\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意數字(同[0-9])
[:graph:] 與[:print:]相同,但不包括空格
[:lower:] 任意小寫字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在內的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:] 任意大寫字母(同[A-Z])
[:xdigit:] 任意十六進制數字(同[a-fA-F0-9])
七、匹配多個實例
1)正則表達式重複元字符
* 0個或多個匹配
+ 1個或多個匹配(等於{1,})
? 0個或1個匹配(等於{0,1})
{n} 指定數目的匹配
{n,} 很多於指定數目的匹配
{n,m} 匹配數目的範圍(m不超過255)
2)select prod_name from products REGEXP '\\([0-9] sticks?\\])' order by prod_name;
\\(匹配),[0-9]匹配任意數字,sticks?匹配sticks和sticks(s後的?使s可選,由於?匹配它前面的任何字符的0次或1次出現),\\)匹配)。沒有?,匹配stick和sticks會很是困難。
3)select prod_name from products where prod_name REGEP '[[:digit:]]{4}' order by prod_name;
[:digit:]匹配任意數字,於是它爲數字的一個集合。{4}確切地要求它前面的字符(任意數字)出現4次,因此[[:digit:]]{4}匹配連在一塊兒的任意4位數字。
八、定位符
1)定位元字符:
^ 文本的開始
$ 文本的結尾
[[:<:]] 詞的開始
[[:>:]] 詞的結尾
2)select prod_name from products where prod_name REGEXP '^[0-9\\.]' order by prod_name;
^匹配串的開始。所以,^[0-9\\.]只在.或任意數字爲串中第一個字符時才匹配它們。沒有^,則還要多檢索出4個別的行(那些中間有數字的行)。