正则表达式匹配 (REGEXP搜索条件)

REGEXP搜索条件和REGEXP_SUBSTR函数支持以下语法约定,同时它们假定反斜线为转义字符。而SIMILARTO搜索表达式不支持这些约定。

正则表达式语法名称和含义

\0xxx

匹配值为\0xxx的字符,其中xxx是任何八进制数字序列,0是零。例如,\0134匹配反斜线。

\a

匹配报警字符。

\A

用在字符集外部以便匹配字符串的开头。

等效于在字符集外部使用的^。

\b

匹配退格字符。

\B

匹配反斜线字符(\)。

\cX

匹配已命名的控制字符。例如,\cZ代表ctrl-Z。

\d

匹配当前归类中的一个数字。例如,以下语句搜索Contacts.Phone以查找以00结尾的所有电话号码:

SELECTSurname,Surname,City,Phone

FROMContacts

WHEREPhoneREGEXP'\\d{8}00';

\d既可用在字符类的内部也可用在字符类的外部,等效于[[:digit:]]。

\D

匹配数字以外的任何字符。它的作用与\d正好相反。

\D既可用在字符类的内部也可用在字符类的外部,等效于[^[:digit:]]。

在方括号内使用取非速记时请务必谨慎。[\D\S]与[^\d\s]并不相同。后者匹配数字或空格以外的任何字符。所以它匹配x,但不匹配8。而前者匹配不是数字或不是空格(满足两个条件之一)的任何字符。因为数字不是空格,空格也不是数字,所以[\D\S]可以匹配任何字符、数字、空格或其它字符。

\e

匹配转义字符。

\E将由\Q启动的将元字符视为非元字符这一功能停止。

\f

匹配换页符。

\n

匹配换行符。

\Q

将所有元字符视为非元字符,直到遇到\E。例如,\Q[$\E等效于\[\$。

\r

匹配回车符。

\s

匹配一个被视为白空格的空格或字符。例如,以下语句从Products.ProductName中返回名称中至少有一个空格的所有产品名:

SELECTName

FROMProducts

WHERENameREGEXP'.*\\s.*'

\s既可用在字符类的内部也可用在字符类的外部,等效于[[:whitespace:]]。

\S

匹配非白空格字符。它的作用与\d正好相反,而等效于[^[:whitespace:]]。

\S既可用在字符类的内部也可用在字符类的外部。

在方括号内使用取非速记时请务必谨慎。[\D\S]与[^\d\s]并不相同。后者匹配数字或空格以外的任何字符。所以它匹配x,但不匹配8。而前者匹配不是数字或不是空格(满足两个条件之一)的任何字符。因为数字不是空格,空格也不是数字,所以[\D\S]可以匹配任何字符、数字、空格或其它字符。

\t

匹配水平制表符。

\v

匹配垂直制表符。

\w

匹配当前归类中的字母字符、数字或下划线。例如,以下语句从Contacts.Surname返回长度正好为七个字母数字字符的所有姓:

SELECTSurname

FROMContacts

WHERESurnameREGEXP'\\w{7}';

\w既可用在字符类的内部也可用在字符类的外部。

等效于[[:alnum:]_].。

\W

匹配当前归类中字母字符、数字或下划线以外的任何字符。它的作用与\w正好相反,而等效于[^[:alnum:]_]。

在字符类的内部和外部都可使用此正则表达式

\xhh

匹配值为0xhh的字符,其中hh最多为两个十六进制数字。例如,\x2D等效于一个连字符。

等效于\x{hh}。

\x{hhh}

匹配值为0xhhh的字符,其中hhh最多为三个十六进制数字。

\z和\Z

匹配字符串结尾处的位置(而非字符)。

等效于$。

相关推荐