三九宝宝网宝宝百科宝宝知识

SQLServerSQL中的正则表达式

12月02日 编辑 39baobao.com

[正则表达式数据抽取regularexpressionadvanceuse]以下是程序的输出:Aim String:buffer size1=0x1234 buffer size2=1024 buffer size3=9999[src pattern]:buffer size1=VAR{HEX_NUM=>N1} buffer size2=VAR{STRING=>N2} buf...+阅读

SQL的查询语句中,有时会需要引进正则表达式为其复杂搜索指定模式。下面给出一些Regexp在MYSQL语句中应用(非全部):

1) ^

匹配字符串的开始部分。

mysql>SELECT 'fo\nfo' REGEXP '^fo$'; ->0mysql>SELECT 'fofo' REGEXP '^fo'; ->1

2) $

匹配字符串的结束部分。

mysql>SELECT 'fo\no' REGEXP '^fo\no$'; ->1mysql>SELECT 'fo\no' REGEXP '^fo$'; ->0

3) .

匹配任何字符(包括回车和新行)。

mysql>SELECT 'fofo' REGEXP '^f.*$'; ->1mysql>SELECT 'fo\r\nfo' REGEXP '^f.*$'; ->1

4) [: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

5) [[::]]

这些标记表示word边界。它们分别与word的开始和结束匹配。word是一系列字字符,其前面和后面均没有字字符。字字符是alnum类中的字母数字字符或下划线(_)。

mysql>SELECT 'a word a' REGEXP '[[::]]'; ->1mysql>SELECT 'a xword a' REGEXP '[[::]]'; ->0要想在正则表达式中使用特殊字符的文字实例,应在其前面加上2个反斜杠“\”字符。MySQL解析程序负责解释其中一个,正则表达式库负责解释另一个。例如,要想与包含特殊字符“+”的字符串“1+2”匹配,在下面的正则表达式中,只有最后一个是正确的:

mysql>SELECT '1+2' REGEXP '1+2'; ->0mysql>SELECT '1+2' REGEXP '1\+2'; ->0mysql>SELECT '1+2' REGEXP '1\\+2'; ->1 其他的有关Regexp的语法,可直接参考下表:字符 含意

\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。

-或-

对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"

$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"

* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa

+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa

? 匹配前面元字符0次或1次,/ba*/将匹配b,ba

(x) 匹配x保存x在名为$1...$9的变量中

x|y 匹配x或y

{n} 精确匹配n次

{n,} 匹配n次以上

{n,m} 匹配n-m次

[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)

[^xyz] 不匹配这个集合中的任何一个字符

[\b] 匹配一个退格符

\b 匹配一个单词的边界

\B 匹配一个单词的非边界

\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M

\d 匹配一个字数字符,/\d/ = /[0-9]/

\D 匹配一个非字数字符,/\D/ = /[^0-9]/

\n 匹配一个换行符

\r 匹配一个回车符

\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等

\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/

\t 匹配一个制表符

\v 匹配一个重直制表符

\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]

\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

以下为关联文档:

汇编语言标识符和表达式标识符和表达式是程序设计经常用到的两个基本概念。在用高级语言进行程序设计时,如果程序要对某个变化的量进行处理时,通常都要对该变化量定义一个具有某种数据类型的符号名,用...

C++基础中缀转后缀表达式对于一个中缀表达式 a+b*c*(d-e/f) 转换成后缀是这样的形式 abc*def/-+后缀表达式是相当有用处的,转换成后缀表达式后求值会简单很多.那么该如何转换呢?网上关于这方面的...

用EXCEL自定义函数计算结果或得到值的计算表达式有许多朋友想知道计算表达式结果的方法,我自己做了一个,供大家参考,方法如下:打开excel,打开“工具_宏_Visual Basic编辑器”,在左侧的工程资源管理器中本文件名称上点击右键,选...

关系代数表达式的优化算法关系表达式的优化过程:输入一个关系表达式的语法树;输出一个计算该表达式的程序。 方法: 1. 利用关系代数等价变换规则4(选择串接定理)把形如 σ-F1ùF2。。。ùFn ( E ) 等价变换...

德语口语“敝人以为”……德语意见表达式finden 认为,感到、发觉 Ich finde es falsch. 我觉得这不对。 Ich finde es praktisch. 我觉得很实惠。 Ich finde es schoen. 我觉得这很好。 Ich finde es unpassend. 我...

推荐阅读
图文推荐