SQL Anywhere正则表达式语法与示例

2020-04-07 14:02:08王振洲
匹配当前归类中的一个数字。例如,以下语句搜索 Contacts.Phone 以查找以 00 结尾的所有电话号码:

SELECT Surname, Surname, City, Phone
 FROM Contacts
 WHERE Phone REGEXP 'd{8}00';

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

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

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

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

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 既可用在字符类的内部也可用在字符类的外部。请参见正则表达式:特殊子字符类。

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

t