mysql中用正則表達式進行搜索匹配教程(二)

進行or匹配

為搜索兩個串之一(或者為這個串,或者為另一個串),使用|,如下所示:

輸入:

select?prod_name?from?products?where?prod_name?regexp?'1000|2000'?order?by?prod_name;

輸出:

mysql中用正則表達式進行搜索匹配教程(二)

分析:語句中使用了正則表達式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;

輸出:

mysql中用正則表達式進行搜索匹配教程(二)

分析:這里,使用了正則表達式[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中用正則表達式進行搜索匹配教程(二)

分析:這并不是期望的輸出。兩個要求的行被檢索出來,但還檢索出了另外三行,之所以這樣是由于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;

輸出:

mysql中用正則表達式進行搜索匹配教程(二)

分析:這里使用正則表達式[1-5]Ton。[1-5]定義了一個范圍,這個表達式意思是匹配1到5,因此返回3個匹配行。由于5ton匹配所以返回.5 ton。

【相關推薦】

1.?mysql中用正則表達式進行搜索匹配教程(一)

2.?mysql中用正則表達式進行搜索匹配教程(一)

3.?mysql中用正則表達式進行搜索匹配教程(一)

4.mmysql中用正則表達式進行搜索匹配教程(一)

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享