美文网首页
chapter09:用正则表达式进行搜索

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

作者: WeirdoSu | 来源:发表于2017-12-18 16:07 被阅读0次

    使用MySQL正则表达式

    仅为正则表达式语言的一个子集。

    基本字符匹配

    例:检索列prod_name包含文本.000的所有行:

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '.000'
    ORDER BY prod_name;
    

    !:正则匹配不区分大小写,如果需要,使用BINARY关键字,如WHERE prod_name REGEXP BINARY 'JetPack .000'

    进行OR匹配

    为搜索两个字符串之一,使用|

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '1000|2000'
    ORDER BY prod_name;
    

    匹配几个字符之一

    只匹配特定的单一字符,用[]

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '[123] Ton'
    ORDER BY prod_name;
    

    匹配范围

    -

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '[1-5] Ton'
    ORDER BY prod_name;
    

    匹配特殊字符

    \\为前导。\\-表示查找-\\.表示查找.

    SELECT vend_name
    FROM products
    WHERE vend_name REGEXP '\\.'
    ORDER BY vend_name;
    

    \\也用来引用元字符:

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

    匹配字符类

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

    为了更方便的工作,可以使用预定义的字符集,称为字符类(characterclass)。

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

    匹配多个实例

    使用重复元字符,见正则表达式。

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
    ORDER BY prod_name;
    
    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '[[: digit:]]{4}'
    ORDER BY prod_name;
    

    定位符

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

    定位元字符:

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

    相关文章

      网友评论

          本文标题:chapter09:用正则表达式进行搜索

          本文链接:https://www.haomeiwen.com/subject/auemwxtx.html