• MySQL基础(六):用正则表达式进行搜索


    基本字符匹配


    我们从一个非常简单的例子开始。下面的语句检索列prod_name包含文本1000的所有行:

    输入

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '1000';

    输出

    分析

    除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用LIKE的语句(第8章)。它告诉MySQL:REGEXP后所跟的东西作 为正则表达式(与文字正文1000匹配的一个正则表达式)处理。

    进行OR匹配


    为搜索两个串之一(或者为这个串,或者为另一个串),使用|,如下所示:

    输入

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

    输出

    分析

    语句中使用了正则表达式1000|2000。|为正则表达式的OR操作 符。它表示匹配其中之一,因此1000和2000都匹配并返回。

    匹配几个字符之一


    匹配任何单一字符。但是,如果你只想匹配特定的字符,怎么办?可通过指定一组用[和]括起来的字符来完成,如下所示:

    输入

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

    输出

     

    分析

    这里,使用了正则表达式[123] Ton。[123]定义一组字符,它的意思是匹配1或2或3,因此,1 ton和2 ton都匹配且返回(没有3 ton)。

    匹配范围


    集合可用来定义要匹配的一个或多个字符。例如,下面的集合将匹 配数字0到9:

    [0123456789]

    为简化这种类型的集合,可使用-来定义一个范围。下面的式子功能 上等同于上述数字列表:

    范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范 围不一定只是数值的,[a-z]匹配任意字母字符。

    举一个例子:

    输入

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

    输出

    分析

    这里使用正则表达式[1-5] Ton。[1-5]定义了一个范围,这个表达式意思是匹配1到5,因此返回3个匹配行。由于5 ton匹配,所以返回.5 ton。

    匹配特殊字符


    正则表达式语言由具有特定含义的特殊字符构成。我们已经看到.、[]、 |和-等,还有其他一些字符。请问,如果你需要匹配这些字符,应该怎么 办呢?例如,如果要找出包含.字符的值,怎样搜索?请看下面的例子:

    输入

    SELECT vend_name
    FROM vendors
    WHERE vend_name REGEXP '.'
    ORDER BY vend_name;

    输出

    分析

    这并不是期望的输出,.匹配任意字符,因此每个行都被检索出来。

    匹配字符类


    存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。为更方便工作,可以使用预定义的字符集,称为字符类(character class)。表9-2列出字符类以及它们的含义。

    匹配多个实例


    目前为止使用的所有正则表达式都试图匹配单次出现。如果存在一 个匹配,该行被检索出来,如果不存在,检索不出任何行。

    但有时需要 对匹配的数目进行更强的控制。例如,你可能需要寻找所有的数,不管数中包含多少数字,或者你可能想寻找一个单词并且还能够适应一个尾随的s(如果存在),等等。

    定位符 


    目前为止的所有例子都是匹配一个串中任意位置的文本。为了匹配特定位置的文本,需要使用以下表中的定位符。

     

  • 相关阅读:
    visual studio------初建一个c++项目流程
    随便写
    C++再修(一)————通过一个头文件,来讲解整个程序的部分概念
    ROS学习记录(四)————怎样建立一个package包?
    XML的学习笔记(一)————基本语法和规范
    C++学习日记(二)————初始字符串类型及封装
    C++学习日记(一)————类与对象
    ROS学习记录(三)————创建一个简单的发布节点和订阅节点
    ROS学习记录(二)————使用smartcar进行仿真(用.xacro文件来运行rviz)
    ROS学习记录(一)————创建简单的机器人模型smartcar
  • 原文地址:https://www.cnblogs.com/mxsf/p/12691241.html
Copyright © 2020-2023  润新知