• MySQL学习之正则表达式篇


    正则表达式(REGEXP)

    1.简介

    正则表达式是用来匹配列值的特殊字符集合,许多领域都有涉及,
    MySQL使用的正则表达式仅为其一个小小的子集。

    2.基本字符匹配

    2.1筛选包含特定字符串的信息

    //搜索id包含‘001’的所有学生信息
    select * from Student
    where id regexp '001';
    

    注:regexp匹配列值字串,而like匹配整个列值,这是二者的重要区别。如:

    //搜索id是‘001’的学生的信息
    select * from Student
    where id like '001';
    

    2.2点符号

    同通配符中的'_',用以代替一个字符,如:

    //搜索id中含任意字符组合001的学生信息
    select * from Student
    where id regexp '.001';
    

    注:不同于通配符_ ,正则表达式匹配子串,当‘.’放在开头时,仍能匹配到多个字符的字串。
    如上列搜索中可以匹配到:1001,10001,100001,而‘_001’仅能匹配到1001;

    3.or匹配(并)

    通过符号‘|’可以实现or匹配,如:

    //匹配出id为1001、1002、1003三位学生的所有信息
    select * from Student
    where id regexp '1001|1002|1003';
    

    4.匹配几个字符之一

    通过 [ ] 匹配几个字符中的一个,如:

    [123]ABC  可以是:1ABC、2ABC、3ABC
    [ABC]123  可以是:A123、B123、C123
    

    注:

    1. [123] 其实是[1|2|3]的缩写,是一种特殊的or
    2. 时刻注意 [ ] 仅表示一个字符

    5.范围匹配

    在4的基础上可以有如下表示:

    [0-9]  可以是0,1,2,3,... ,9中任意一个数字
    [a-z]  可以是任意一个小写字母
    [A-Z]  可以是任意一个大写字母
    [0-9a-z]  可以是0到9任意一个数字,也可以是任意一个小写字母
    

    注:

    1. 顺序不能反
    2. 时刻注意 [ ] 仅表示一个字符

    6.转义匹配

    1. 如需匹配像 . | 等特殊字符,需要用双斜杠\转义。
      前一个 用来向MySQL解释,后一个用于向正则表达式解释。

    2. 如需引用元字符,也需使用\,如:

    • \f 换页
    • \n 换行
    • \r 回车
    • \t 制表
    • \v 纵向制表

    7.匹配字符类

    使用预定义的字符集:

    [:alnum:]  任意字母和数字(同[a-zA-Z0-9])
    [:alpha:]  任意字符(同[a-zA-Z])
    [:blank:]  空格和制表(同[	])
    [:cntrl:]  ASCII控制字符(ASCII 0到31和127)
    [:digit:]  任意数字(同[0-9])
    [:graph:]  与[:print:]相同,但不包括空格
    [:lower:]  任意小写字母(同[a-z])
    [:print:]  任意可打印字符
    [:punct:]  既不在[:alnum:]又不在[:cntrl:]中的任意字符
    [:space:]  包括空格在内的任意空白字符(同[f
    
    	v])
    [:upper:]  任意大写字母(同[A-Z])
    [:xdigit:] 任意十六进制数字(同[a-fA-F0-9])
    
    

    8.匹配多个实例

    *                      0个或多个匹配
    +                      1个或多个匹配(等于 {1, })
    ?                      0个或1个匹配(等于 {0, 1})
    {n}                    指定数目的匹配
    {n, }                  不少于指定数目的匹配
    {n ,m}                 匹配数目的范围(m不超过255)
    

    9.定位符

    ^        文本的开始
    $        文本的末尾
    [[:<:]]  词的开始
    [[:>:]]  词的结尾
    

    注:使用 ^ 和 $ 可以使正则表达式等效Like操作符,如:

    //此两者等价
    select * from Student
    where id regexp '^001$';
    
    select * from Student
    where id like '001';
    
    
  • 相关阅读:
    [机器学习实战]K-近邻算法
    [机器学习Lesson3] 梯度下降算法
    [机器学习Lesson 2]代价函数之线性回归算法
    [机器学习Lesson 1] 机器学习简介
    Flume
    Kafka基础入门
    打造MacOS版“XShell”
    你好,智哥(摘自微信公众号“野兔故事会”)
    打印小册子
    php--strlen()与mb_strlen的作用与区别
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/12759697.html
Copyright © 2020-2023  润新知