Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语言元素 » 表达式

 

正则表达式概述

正则表达式是一个字符、通配符或运算符的序列,用于定义在字符串内进行搜索所使用的模式。SQL Anywhere 支持将正则表达式作为 SELECT 语句的 WHERE 子句中 REGEXP 或 SIMILAR TO 搜索条件的一部分,或将其作为 REGEXP_SUBSTR 函数的参数。LIKE 搜索条件不支持正则表达式,尽管使用 LIKE 时所指定的某些通配符和运算符与正则表达式的通配符和运算符类似。

以下 SELECT 语句使用正则表达式 ((K|C[^h])%) 搜索 Contacts 表并返回姓氏以 K 或 C(但非 Ch)开头的联系人:

SELECT Surname, GivenName 
   FROM Contacts
   WHERE Surname SIMILAR TO '(K|C[^h])%';

正则表达式可包括附加的语法来指定组合、量化、断言和替代,如下所述。

  • 组合   组合允许您将各个正则表达式部分组合在一起,以应用某种附加的匹配条件。例如,'(abc){2}' 匹配 abcabc。

    您还可以使用组合来控制表达式各部分的计算顺序。例如,'ab(cdcd)' 首先查找 cdcd 的出现,然后判断 cdcd 实例是否存在前缀 ab。

  • 量化   量化允许您控制表达式的前面部分可以出现的次数。例如,问号 (?) 是一个匹配零或前面字符的一个实例的量词。这样,'honou?r' 会与 honor 和 honour 都匹配。

  • 断言   通常,搜索一个模式就会返回该模式。断言允许您测试某个模式是否存在,而无需将该模式作为返回内容的一部分。例如,对于 'SQL(?= Anywhere)',仅当 SQL 后跟空格和 Anywhere 时才会匹配 SQL。

  • 替代   替代允许您在无法找到前面的模式时指定替代模式来进行搜索。替代模式从左到右进行计算,找到第一个匹配时即停止搜索。例如,'col(o|ou)r' 会查找 color 的实例。如果未找到任何实例,则改为搜索 colour。

另请参见