すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:RLIKE

最終更新日:Dec 06, 2024

RLIKEは、Perl互換正規表現 (PCRE) 標準に基づいてMaxCompute SQLによって提供される演算子です。 RLIKE演算子を使用すると、MaxCompute SQLでより正確で複雑なパターンマッチングまたは置換を実行できます。 このトピックでは、RLIKE、POSIX文字グループ、漢字グループ、およびエスケープ文字でサポートされているメタ文字について説明します。 このトピックでは、関連する文字の例も示します。

Metacharacter

RLIKEオペレータはさまざまなmetacharactersを支えます。 次の表に、RLIKEでサポートされる一般的に使用されるメタキャラクターを示します。

Metacharacter

説明

^

文字列の先頭と一致します。

¥

文字列の末尾と一致します。

.

任意の単一の文字と一致します。

*

前の文字または文字パターンと0回以上一致します。

+

前の文字または文字パターンと1回以上一致します。

?

前の文字または文字パターンと0または1回一致します。

?

修飾子と一致します。 この文字が他の文字 (* 、+ 、? 、{n} 、{n、} 、または {n、m}) のいずれかに続く場合、一致パターンは非貪欲です。 非貪欲アルゴリズムでは、文字列はできるだけ少ない文字と一致する。 欲張りアルゴリズムでは、文字列はできるだけ多くの文字と一致する。 デフォルトでは、greedyアルゴリズムが使用されます。

A | B

AまたはBに一致します。

(abc)*

abcシーケンスを0回以上照合します。

{n} または {m,n}

一致の数。

[ab]

角括弧内の任意の文字と一致。 ファジーマッチが使用される。

[a-d]

a、b、c、dのいずれかの文字と一致します。

[^ab]

括弧内の文字以外の文字と一致します。

[::]

詳細については、「POSIX文字グループ」をご参照ください。

\

エスケープ文字。 詳細については、「エスケープ文字」をご参照ください。

\n

nは1から9までの数字であり、バックリファレンスを示します。

\d

数字。

\D

数字以外の文字。

  • 正規表現の詳細については、pcre2syntax man pageをご覧ください。

  • 一致する結果が期待に合わない場合は、エスケープ文字が必要になる場合があります。 詳細については、「エスケープ文字」をご参照ください。

  • 例1: 文字列の先頭と末尾を一致させます。

    select 'aa123bb' rlike '^a';
    -- Match the beginning of the string aa123bb with a. true is returned.
    
    select 'aa123bb' rlike '^a.*b$';
    -- Match the beginning of the string aa123bb with a and the end of the string aa123bb with b. true is returned.
    
    select 'footerbar' rlike 'foo(.*?)(bar)';
    -- true is returned.
  • 例2: エスケープ文字を使用して、特殊文字を持つ文字列を照合します。

    select 'a+b' rlike 'a\\\+b';
    -- true is returned.
  • 例3: 任意の単一の文字を一致させる。

    select 'cc123bb' rlike '^[a-d]';
    -- Match the beginning of the string cc123bb with one of the characters from a to d. true is returned.
  • 例4: 任意の数字と任意の数字以外の文字を一致させる。

    select '123bb' rlike '^\\\d';
    -- Match the beginning of the string 123bb with any digit. true is returned.
    
    select 'cc123bb' rlike '^\\\D';
    -- Match the beginning of the string cc123bb with any non-digit character. true is returned.

文字グループ

POSIX文字グループ

文字グループ

説明

有効値

[[:alnum:]]

文字と数字

[a-zA-Z0-9-]*

[[:alpha:]]

Letters

[a-zA-Z]

[[:ascii:]]

ASCII文字

[\x00-\x7F]

[[:blank:]]

スペースとタブ文字

[ \t]

[[:cntrl:]]

コントロール文字

[\x00-\x1F\x7F]

[[:digit:]]

数字

[0-9]

[[:graph:]]

空白文字以外の文字

[\x21-\x7E]

[[:lower:]]

小文字

[a-z]

[[:print:]]

[:graph:] と空白文字

[\x20-\x7E]

[[:punct:]]

句読点

[][!”#$%& '()* +,./:;<=>? @\^_`{|}~-]

[[:space:]]

空白文字

[ \t\r\n\v\f]

[[:upper:]]

大文字

[A-Z]

[[:xdigit:]]

16進文字

[A-Fa-f0-9]

説明

MaxComputeは、\fおよび \vのエスケープ文字をサポートしていません。 MaxComputeでサポートされているエスケープ文字の詳細については、「エスケープ文字」をご参照ください。

漢字グループ

文字グループ

有効値

漢字などのダブルバイト文字

[^\\ x{00}-\x{ff}]

漢字

[\x{4e00}-\x{9fa5}]

中国の句読点

中国の句読点には、統一されたUnicode範囲はありません。 検索エンジンを使用してUnicode of a Chinese句読点を検索し、演算子を使用して中国の句読点に一致させることができます。

たとえば、中国語のピリオド (。) は [\\x{3002}] として表されます。 select * from values ('好。') 、('nihao! t(d) where d rlike '[\\x{3002}]'; ステートメントを実行すると、返される結果はです。 .

説明

中国語の単一引用符 (') を一致させたい場合は、unicode0027を使用できます。 中国語の単一引用符 (') は [\\x{0027}] で表されます。

エスケープ文字

RLIKEでは、バックスラッシュ (\) をエスケープ文字として使用できます。 したがって、正規表現のバックスラッシュ (\) もエスケープする必要があります。

  • 例 1

    正規表現を使用してa + bの文字列に一致させます。 式のプラス記号 (+) は式の特殊文字であり、エスケープする必要があります。 正規表現エンジンでは、文字列はa\\+ bとして表されます。 式は再びエスケープする必要があります。 したがって、文字列に一致する式はa \\\ + bです。

    select 'a+b' rlike 'a\\\+b';
    
    +------+
    | _c1  |
    +------+
    | true |
    +------+
  • 例 2

    バックスラッシュ (\) の文字と一致します。 特定の場合、バックスラッシュ (\) 文字は正規表現エンジンでは特殊文字であり、エンジンでは \\ として表す必要があります。 次に、式を再びエスケープする必要があります。 その結果、バックスラッシュ (\) 文字は \\\\ と表されます。

    select 'a\\b', 'a\\b' rlike 'a\\\b';
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | false |
    +-----+------+
    
    select 'a\\b', 'a\\b' rlike 'a\\\\b';
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | true |
    +-----+------+
    説明

    MaxCompute SQL文にa\\bが含まれている場合、MaxComputeは式をエスケープするため、a\bを返します。

  • 例 3

    タブ文字を一致させます。 文字列にタブ文字が含まれている場合、MaxComputeはこの式を読み取るときに \tを1文字として格納します。 したがって、\tは正規表現では共通の文字です。

    select 'a\tb', 'a\tb' rlike 'a\tb';
    
    +---------+------+
    | _c0     | _c1  |
    +---------+------+
    | a     b | true |
    +---------+------+