進行or匹配
為搜索兩個串之一(或者為這個串,或者為另一個串),使用|,如下所示:
輸入:
select?prod_name?from?products?where?prod_name?regexp?'1000|2000'?order?by?prod_name;
輸出:
分析:語句中使用了正則表達式1000|2000。|為正則表達式的or操作符。它表示匹配其中之一,因此1000和2000都匹配并返回。
使用|從功能上類似于select語句中使用or語句,多個or條件可并入單個正則表達式。
注意:可以給出兩個以上的or條件。例如’1000|2000|3000’將匹配1000或2000或3000.
匹配幾個字符之一
匹配任何單一字符。但是,如果你只想匹配特定的字符,怎么辦?
可以通過制定一組用[和]括起來的字符來完成,如下所示:
輸入:select prod_name from products where prod_name regexp ‘[123] Ton’ order by prod_name;
輸出:
分析:這里,使用了正則表達式[123]Ton。[123]定義一組字符,它的意思是匹配1或2或3,因此,1ton和2ton都是匹配且返回(沒有3ton)。
正如所見,[]是另一種形式的or語句。事實上,正則表達式[123]Ton為[1|2|3]Ton的縮寫,也可以使用后者。但是,需要用[]來定義or語句查找什么。為更好地理解這一點,應看下面的例子:
輸入:
select?prod_name?from?products?where?prod_name?regexp?'1|2|3?Ton‘?order?by?prod_name;
輸出:
分析:這并不是期望的輸出。兩個要求的行被檢索出來,但還檢索出了另外三行,之所以這樣是由于MySQL假定你的意思是‘1’或‘2’或‘3ton’。除非把字符|擴在一個集合中,否則它將應用于整個串。
字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西。為否定一個字符集,在集合的開始處放置一個^即可。因此,盡管[123]匹配字符1、2或3,但[^123]卻匹配除這些字符外的任何東西。
匹配范圍
集合可用來定義要匹配的一個或多個字符。例如,線面的集合講匹配數字0到9:
[123456789]
為簡化這種類型的集合,可以使用-來定義一個范圍。下面的式子功能上等同于上述數字列表:
[0-9]
范圍不限于完整的集合,[1-3]和[6-9]也是合法的范圍。此外,范圍不一定只是數值的,[a-z]匹配任意字母字符。
舉個例子:
輸入:
select?prod_name?from?products?where?prod_name?regexp?'[1-5]?Ton’?order?by?prod_name;
輸出:
分析:這里使用正則表達式[1-5]Ton。[1-5]定義了一個范圍,這個表達式意思是匹配1到5,因此返回3個匹配行。由于5ton匹配所以返回.5 ton。
【相關推薦】