天天看点

用正则表达式进行搜索用正则表达式进行搜索

用正则表达式进行搜索

正则表达式的介绍

正则表达式的使用环境

  • 如果你想从一个文本文件中提取电话号码
  • 如果你需要查找名字中间有数字的所有文件
  • 如果你想在一个文本块中找到所有重复的单词
  • 如果你想替换一个页面中的所有URL为这些URL的实际HTML链接

基本字符匹配

语法结构

SELECT 列名
FROM 表格
WHERE 列名 REGEXP 'XX'
ORDER BY 列名
           

表示返回列中列名中包含(XX)子列的所有行

除了关键字LIKE被REGEXP代替外,这个语法结构和LIKE的语句相同

LIKE与REGEXP的区别

如果LIKE语句想和REGEXP语句有相同的作用,需要结合(_或%)来使用

进行OR匹配

语法结构

SELECT 列名
FROM 表格
WHERE 列名 REGEXP 条件一 | 条件二
ORDER BY 列名;
           

这个语句用于检索列表中满足条件一或条件二的所有行

匹配几个字符之一

匹配任何单一字符。但是如果匹配特定的字符,怎么办,可以通过指定一组用[和]括起来的字符来完成。

语法结构

SELECT 列名
FROM 表格
WHERE 列名 REGEXP '[abc] XX'
ORDER BY 列名;
           

该语句意义为:删选除列值满足a XX 或 b XX 或 c XX的所有的列

正则表达式[abc]xx是[a|b|c]xx的缩写

匹配范围

要是匹配范围,将匹配字符的[abc]换成[a-c]即可

匹配特殊字符

要匹配列值中包含特殊字符,必须使用\ \为作为前导

空白元字符

元字符 说明
\ \f 换页
\ \n 换行
\ \r 回车
\ \t 制表
\ \v 纵向制表

匹配字符类

字符类

说明
[ :alnum: ] 任意字母和数字(同[a-ZA-z0-9])
[ :alpha: ] 任意字符(同[a-zA-Z])
[ :black: ] 空格和制表(同[ \ \t])
[ :cntrl: ] ASCLL控制字符(ASCLL 0到31和127)
[ :digit: ] 任意数字(同[0-9])
[ :graph: ] 与[ :print: ]相同,但不包括空格
[ :lower: ] 任意小写字母(同[a-z])
[ :print: ] 任意可打印字符
[ :punct: ] 即不在[ :alnum: ]又不在[ :cntrl: ]中的任意字符
说明
[ :space: ] 包括空格在内地任意空白字符
[ :upper: ] 任意大写字符
[ :xdigit: ] 任意十六进制数字

匹配多个实例

重复元字符

元字符 说明
* 0个或多个匹配
+ 1个或多个匹配
0个或1个匹配
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围

定位符

定位元字符

元字符 说明
^ 文本的开始
$ 文本的结尾
[[: < :]] 词的开始
[[: > :]] 词的结尾

继续阅读