select
*
from
message
where
title
regexp
'^发'
;
查询title中,以发开头的所有信息
对于REGEXP
操作符,
正则表达式可以使用任何下述特殊字符和结构:
·
^
匹配字符串的开始部分。
mysql> SELECT 'fo\nfo' REGEXP '^fo$';
-> 0
mysql> SELECT 'fofo' REGEXP '^fo';
-> 1
·
$
匹配字符串的结束部分。
mysql> SELECT 'fo\no' REGEXP '^fo\no$';
-> 1 匹配(
fo\no
)开始和结尾
mysql> SELECT 'fo\no' REGEXP '^fo$';
-> 0
·
.
匹配任何字符(包括回车和新行)。
mysql> SELECT 'fofo' REGEXP '^f.*$';
-> 1 *任意个数的意思
mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$';
-> 1
SELECT
'abcde'
REGEXP
'^a.*e$'
;
1 匹配以a开头,以e结尾的字符串
·
a*
匹配0
或多个a
字符的任何序列。
mysql> SELECT 'Ban' REGEXP '^Ba*n';
-> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n';
-> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n';
-> 1
·
a+
匹配1
个或多个a
字符的任何序列。
mysql> SELECT 'Ban' REGEXP '^Ba+n';
-> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n';
-> 0
·
a?
匹配0
个或1
个a
字符。
mysql> SELECT 'Bn' REGEXP '^Ba?n';
-> 1
mysql> SELECT 'Ban' REGEXP '^Ba?n';
-> 1
mysql> SELECT 'Baan' REGEXP '^Ba?n';
-> 0
·
de|abc
匹配序列de
或abc
。
mysql> SELECT 'pi' REGEXP 'pi|apa';
-> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';
-> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';
-> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';
-> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$';
-> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$';
-> 0
·
(abc)*
匹配序列abc
的0
个或多个实例。
mysql> SELECT 'pi' REGEXP '^(pi)*$';
-> 1
mysql> SELECT 'pip' REGEXP '^(pi)*$';
-> 0
mysql> SELECT 'pipi' REGEXP '^(pi)*$';
-> 1
·
{1}
,
{2,3}
{n}
或{m,n}
符号提供了编写正则表达式的更通用方式,能够匹配模式的很多前述原子(或“
部分”
)。m
和n
均为整数。
o
a*
可被写入为a{0,}
。
o
a+
可被写入为a{1,}
。
o
a?
可被写入为a{0,1}
。
更准确地讲,a{n}
与a
的n
个实例准确匹配。a{n,}
匹配a
的n
个或更多实例
。a{m,n}
匹配a
的m
~n
个实例
,包含m
和n
。
m
和n
必须位于0
~RE_DUP_MAX
(默认为
255
)
的范围内,包含0
和RE_DUP_MAX
。如果同时给定了m
和n
,m
必须小于或等于n
。
mysql> SELECT 'abcde' REGEXP 'a[bcd]
{2}e';
-> 0
mysql> SELECT 'abcde' REGEXP 'a[bcd]{3}e';
-> 1
mysql> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';
-> 1
·
[a-dX]
,
[^a-dX]
匹配任何是(或不是
,如果使用^的话)a、b、c、d或X的字符。两个其他字符之间的“-”字符构成一个范围,与从第1个字符开始到第2个字符之间的所有字符匹配。例如,[0-9]匹配任何十进制数字
。要想包含文字字符“]”,它必须紧跟在开括号“[”之后。要想包含文字字符“-”,它必须首先或最后写入。对于[]对内未定义任何特殊含义的任何字符,仅与其本身匹配。
mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]';
-> 1
SELECT
'aXbc'
REGEXP
'[Z]'
;
0 没有可以匹配的
SELECT
'aXbc'
REGEXP
'[a]'
;
1
'aXbc'
中的字符有任意的可以匹配括号中的字符
对字符所在的位置没有要求
SELECT
'aXbc'
REGEXP
'[^a]'
;
1
SELECT
'aXbc'
REGEXP
'^[^a]'
;
0
第一位不能是a,所以不匹配
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$';
-> 0
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';
-> 1
mysql> SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$';
-> 0
mysql> SELECT 'gheis' REGEXP '^[^a-dXYZ]+$';
-> 1
mysql> SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$';
-> 0
·
[.characters.]
在括号表达式中(使用[
和]
),
匹配用于校对元素的字符序列
。字符为单个字符或诸如新行等字符名。在文件regexp/cname.h
中,可找到字符名称的完整列表。
mysql> SELECT '~' REGEXP '[[.~.]]';
-> 1
mysql> SELECT '~' REGEXP '[[.tilde.]]';
-> 1
·
[=character_class=]
在括号表达式中(使用[和]),[=character_class=]表示等同类。它与具有相同校对值的所有字符匹配,包括它本身,例如,如果o和(+)均是等同类的成员,那么[[=o=]]、[[=(+)=]]和[o(+)]是同义词。等同类不得用作范围的端点。
·
[:character_class:]
在括号表达式中(使用[和]),[:character_class:]表示与术语类的所有字符匹配的字符类
。标准的类名称是:
alnum
|
文字数字字符
|
alpha
|
文字字符
|
blank
|
空白字符
|
cntrl
|
控制字符
|
digit
|
数字字符
|
graph
|
图形字符
|
lower
|
小写文字字符
|
print
|
图形或空格字符
|
punct
|
标点字符
|
space
|
空格、制表符、新行、和回车
|
upper
|
大写文字字符
|
xdigit
|
十六进制数字字符
|
它们代表在ctype(3)
手册页面中定义的字符类。
特定地区可能会提供其他类名。字符类不得用作范围的端点。
mysql> SELECT 'justalnums' REGEXP '[[:alnum:]]+';
-> 1
mysql> SELECT '!!' REGEXP '[[:alnum:]]+';
-> 0
·
[[:<:]]
,
[[:>:]]
这些标记表示word边界。它们分别与word的开始和结束匹配。word是一系列字字符,其前面和后面均没有字字符。字字符是alnum类中的字母数字字符或下划线(_)。
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]';
-> 1
mysql> SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]';
-> 0
要想在正则表达式中使用特殊字符的文字实例,应在其前面加上2
个反斜杠“\
”字符。MySQL
解析程序负责解释其中一个,正则表达式库负责解释另一个。例如,要想与包含特殊字符“+
”的字符串“1+2
”匹配,在下面的正则表达式中,只有最后一个是正确的:
mysql> SELECT '1+2' REGEXP '1+2';
-> 0
mysql> SELECT '1+2' REGEXP '1\+2';
-> 0
mysql> SELECT '1+2' REGEXP '1\\+2';
-> 1
分享到:
相关推荐
### JavaScript将字符串中的多个空格替换为一个空格的正则实例 在Web开发与日常编程中,我们经常需要处理字符串。特别是在用户输入或者文本处理过程中,常常会遇到需要清理字符串中的多余空格的情况。例如,当从...
Linux运维-3.Shell编程-12 shell编程-126正则实例.avi
【Python正则实例入门:《Python re(gex)?》随书代码】’py_regular_expressions - Learn Python Regular Expressions step by step from beginner to advanced levels' by Sundeep Agarwal
本篇将详细介绍两个在Delphi中使用正则表达式的实例。 首先,让我们理解什么是Delphi。Delphi是一款由Embarcadero Technologies开发的集成开发环境(IDE),主要用于编写Windows和Mac OS X平台上的原生应用程序。它...
【正则表达式实例在网页前端开发中的应用】 正则表达式是编程中处理文本的强大工具,尤其在网页前端开发中,它常用于数据验证、内容提取和格式化。以下是一些具体的正则表达式实例及其应用: 1. **截取中间字符串*...
这个“vb正则表达式实例”很可能是为了帮助开发者测试和理解正则表达式的工作原理而设计的一个应用程序。下面将详细探讨正则表达式的基本概念、在VB.NET中的应用以及如何使用它们进行文本匹配。 1. 正则表达式基础 ...
### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与特点 **1.1 正则表达式是什么?** - **定义:** 正则表达式(Regular Expression)是一种用于匹配字符串中字符组合的工具,广泛应用于搜索、...
本教程将深入讲解Java中的正则表达式,并提供丰富的实例来帮助开发者理解和应用这些概念。 1. 正则表达式基础: - 定义:正则表达式是由字符、元字符和操作符组成的模式,用于描述字符串的模式。 - 元字符:如"....
### 正则表达式经典实例 #### 一、概述 正则表达式是计算机科学领域中一种用于描述字符串模式的强大工具。它广泛应用于文本搜索、数据验证、字符串替换等多种场景。《正则表达式经典实例》这本书深入浅出地介绍了...
本实例“vb与正则表达式小实例”旨在帮助学习者理解如何在VB中应用正则表达式进行数据验证。在VB中,我们可以使用`System.Text.RegularExpressions`命名空间中的`Regex`类来操作正则表达式。以下是一些核心知识点: ...
以SDUT教务系统为例,抓取学生成绩并解析,计算GPA
例如,使用Regex类的IsMatch方法可以检测字符串是否匹配给定的正则表达式模式,而Match方法可以找到字符串中所有匹配该模式的实例。 具体实例包括: 1. 验证电话号码:正则表达式能够匹配带有区号和号码的电话格式...