MySQL施用正则表达式

MySQL施用正则表达式

MySQL应用正则表达式

正则表达式是为复杂搜索指定模式的强大方式。

MySQL采用Henry Spencer的正则表达式实施,其目标是符合POSIX 1003.2MySQL采用了扩展的版本,以支持在SQL语句中与REGEXP操作符一起使用的模式匹配操作

归纳了在MySQL中可用于REGEXP操作的特殊字符和结构,并给出了一些示例。本附录未包含可在Henry Spencerregex(7)手册页面中发现的所有细节。该手册页面包含在MySQL源码分发版中,位于regex目录下的regex.7文件中。

正则表达式描述了一组字符串。最简单的正则表达式是不含任何特殊字符的正则表达式。例如,正则表达式hello匹配hello

非平凡的正则表达式采用了特殊的特定结构,从而使得它们能够与1个以上的字符串匹配。例如,正则表达式hello|word匹配字符串hello或字符串word

作为一个更为复杂的示例,正则表达式B[an]*s匹配下述字符串中的任何一个:BananasBaaaaasBs以及以B开始、以s结束、并在其中包含任意数目an字符的任何其他字符串。

对于REGEXP操作符,正则表达式可以使用任何下述特殊字符和结构:

·???????? ^

匹配字符串的开始部分。

mysql> SELECT 'fonfo' REGEXP '^fo$';?????????????????? -> 0
mysql> SELECT 'fofo' REGEXP '^fo';????????????????????? -> 1

·???????? $

匹配字符串的结束部分。

mysql> SELECT 'fono' REGEXP '^fono$';???????????????? -> 1
mysql> SELECT 'fono' REGEXP '^fo$';??????????????????? -> 0

·???????? .

匹配任何字符(包括回车和新行)。

mysql> SELECT 'fofo' REGEXP '^f.*$';??????????????????? -> 1
mysql> SELECT 'fornfo' REGEXP '^f.*$';??????????????? -> 1

·???????? a*

匹配0或多个a字符的任何序列。

mysql> SELECT 'Ban' REGEXP '^Ba*n';???????????????????? -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n';?????????????????? -> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n';????????????????????? -> 1

·???????? a+

匹配1个或多个a字符的任何序列。

mysql> SELECT 'Ban' REGEXP '^Ba+n';???????????????????? -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n';????????????????????? -> 0

·???????? a?

匹配0个或1a字符。

mysql> SELECT 'Bn' REGEXP '^Ba?n';????????????????????? -> 1
mysql> SELECT 'Ban' REGEXP '^Ba?n';???????????????????? -> 1
mysql> SELECT 'Baan' REGEXP '^Ba?n';??????????????????? -> 0

·???????? de|abc

匹配序列deabc

mysql> SELECT 'pi' REGEXP 'pi|apa';???????????????????? -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';??????????????????? -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';??????????????????? -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';??????????????? -> 1
MySQL施用正则表达式

相关文章:

你感兴趣的文章:

标签云: