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 があるかどうかを評価します。

  • 量指定   量指定を使用すると、式の先行部分が出現する回数を制御できます。たとえば、疑問符 (?) は、その前の文字の 0 または 1 つのインスタンスに一致する量指定子です。このため、'honou?r' は honor と honour の両方に一致します。

  • アサーション   通常、パターンの検索ではそのパターンが返されます。アサーションを使用すると、返される表現にパターンに含めることなく、パターンの存在をテストできます。たとえば、'SQL(?= Anywhere)' は、SQL の後ろに 1 つのスペースと Anywhere が続く SQL にのみ一致します。

  • 代替   代替を使用すると、前のパターンが検出されない場合に検索する代替パターンを指定できます。代替パターンは左から右の順に評価され、最初の一致で検索が停止します。たとえば、'col(o|ou)r' は、color のインスタンスを検索します。インスタンスが検出されない場合、代わりに colour が検索されます。

参照