正则表达式匹配 (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
匹配字符串结尾处的位置(而非字符)。
等效于$。