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