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

REGEXP 搜索条件和 REGEXP_SUBSTR 函数支持以下语法约定,同时它们假定反斜线为转义字符。而 SIMILAR TO 搜索表达式不支持这些约定。
正则表达式语法 名称和含义
\0 xxx

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

匹配报警字符。
\A

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

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

匹配退格字符。
\B

匹配反斜线字符 (\)。
\c X

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

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


SELECT Surname, Surname, City, Phone
   FROM Contacts
   WHERE Phone REGEXP '\\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 中返回名称中至少有一个空格的所有产品名:


SELECT Name
FROM Products
WHERE Name REGEXP '.*\\s.*'

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

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

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

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

匹配水平制表符。
\v

匹配垂直制表符。
\w

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


SELECT Surname
FROM Contacts
WHERE Surname REGEXP '\\w{7}';

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

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

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

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

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

等效于 \x{hh}。
\x{ hhh }

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

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

等效于 $。

猜你喜欢

转载自herrychen-sz-gmail-com.iteye.com/blog/1748823
今日推荐