• MySql 使用正则表达式


    MySql 用where 子句对正则表达式提供了支持,允许你指定正则表达式,注意mysql仅支持多数正则表达式实现的一个很小的子集。

    1.基本字符匹配:

    SELECT prod_name
    FROM products
    WHERE prod_name REGEXP '1000';

    mysql 中正则表达式匹配不区分大小写,为区分大小写,可使用BINARY 关键字,如:

    WHERE prod_name REGEXP BINARY 'JetPak .000'

    2. OR 匹配

    WHERE prod_name REGEXP '1000|2000';

    | 为正则表达式的OR操作符。它表示匹配基中之一。多个OR条件可以并入单个正则表达式,例如:'1000|2000|3000' 将匹配1000或2000或3000.

    3.匹配几个字符之一

    WHERE prod_name REGEXP '[123] Ton'

    [123] 定义一组字符,它的意思是匹配1或2或3。[]是另一种形式的OR语句,事实上,正则表达式[123]Ton 为[1|2|3]Ton 的缩写。

    为否定一个字符集,在集合的开始处放置一个^即可,因此[^123]匹配除1,2,3字符之外的任何东西。

    4.匹配范围

    可使用 - 来定义一个范围,如[0-9] 表示匹配0到9之间的任一个数字。范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意一个字母字符。

    WHERE prod_name REGEXP '[1-5] Ton'

    5.匹配特殊字符

    为了匹配特殊字符,必须用\为前导进行转义,\- 表示查找-,\. 表示查找. 。

    WHERE vend_name REGEXP '\.'

    为了匹配反斜杠()字符本身,需要使用\

    6.定位符

    为了匹配特定位置的文本可以使用如下定位符:

    元字符 说明
    ^ 文本的开始
    $ 文本的结尾
       
       

    例如,你想找出以一个数(包括以小数点开始的数)开始的所有产品:

    WHERE prod_name REGEXP '^[0-9\.]'

    ^有两种用法:在集合中(用[和]定义),用它来否定该集合,否则用它来指定串的开始。

    7.重复元字符

    . 匹配任意一个字符
    * 匹配0个或多个字符
    + 匹配1个或多个字符(等于{1,}
    ? 匹配0个或1个字符(等于{0,1}
    {n} 指定数目的匹配
    {n,} 不少于指定数据的匹配
    {n,m} 匹配数目的范围(m不超过255)
    WHERE prod_name REGEXP '\([0-9] sticks?\)'

    \( 匹配字符(,[0-9]匹配任意一个数字,sticks? 匹配stick和sticks (s 后的?使s可选),\) 匹配字符)。

    8.简单的正则表达式测试

    可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP 在匹配成功时总是返回1,匹配不成功时返回0,可以用带文字串的REGEXP来测试表达式,并试验它们。相应的语法如下:

    SELECT 'hello' REGEXP '[0-9]';
    这个例子显示将返回0(因为文本hello中没有数字)。
  • 相关阅读:
    读取points文件
    JSP语法1
    servlet与SSI
    JDBC连接数据库
    django开发Blog(2)
    django开发Blog(1)
    JSP学习2:useBean动作标签
    django开发Blog(4)
    Servelet基础
    servlet会话管理2
  • 原文地址:https://www.cnblogs.com/weekend001/p/3462834.html
Copyright © 2020-2023  润新知