REGEXP 演算子
WHERE 句で正規表現演算子 REGEXP を使用して、複雑な一致クエリを処理できます。この演算子は、引数として渡されたパターンに対して、文字列の正規表現パターンマッチングを適用します。ADQL は、Lucene 正規表現エンジンを使用して REGEXP 式を分析します。REGEXP 演算子を使用するクエリの検索結果は、正規表現の構文とルールに基づくだけでなく、分析対象フィールドと分析対象外フィールドのどちらを検索するかにも基づきます。分析対象フィールドで REGEXP を使用するには、「分析対象フィールド」を参照してください。
REGEXP 演算子は、分析対象フィールド内の小文字のトークンとのみ一致可能です。REGEXP ワイルドカードまたは を使用して分析対象フィールドで大文字の文字列を検索するには、小文字の文字列を入力する必要があります。たとえば、INFO ではなく info です。
許可される文字
任意の Unicode 文字を正規表現パターンで使用できますが、特定の文字は予約されているため、エスケープする必要があります。予約済み文字は、リテラルバックスラッシュ文字 "\\". を含むバックスラッシュ "\*" でエスケープできます。
標準的な予約済み文字を次に示します。
. ? + * | { } [ ] ( ) " \
クエリのパフォーマンス上の理由から、REGEXP パターンで予約済み文字を使用する前に、文字列の最初の 3 文字を明示的に指定する必要があります。次の例では、[ 0-9 ] の角カッコの前に 123 を指定しています。
SELECT * FROM logs WHERE sourceType='yourLogFile' AND id REGEXP' 123 [ 0-9 ]'
次のようなクエリは無効です。
SELECT * FROM logs WHERE sourceType='yourLogFile' AND id REGEXP '[ 0-9 ]'
操作、文字列、および関連付けられているパターンの例
| サポートされる操作 | 説明 | 文字列 | パターン |
|---|---|---|---|
| 任意の文字と一致します | ピリオド「.」は、任意の文字を表すために使用できます。 | abcde | abc.. |
| 1 つ以上 |
プラス記号「+」を使用すると、直前の最短パターンを 1 回以上繰り返すことができます。 |
aaabb | aaab+ |
| 0 以上 |
アスタリスク「*」を使用すると、直前の最短パターンのゼロ回以上の繰り返しに一致させることができます。 |
aaaabbbcc | aaaab*c* |
| ゼロまたは 1 | 疑問符「?」を使用すると、直前の最短のパターンがオプションになります。これは、ゼロまたは 1 回に一致します。 |
aaabbbc | aaa?b+c? |
| 最小から最大まで |
波カッコ「{}」を使用すると、直前の最短パターンを繰り返すことができる最小回数および最大回数(オプション)を指定できます。使用可能な形式を次に示します。 {5} # 正確に 5 回繰り返します。 {2, 5} # 2 回以上 5 回以下繰り返します。 | aaaabbbcc |
aaaab{3}c{2}aaaab{2,4}c{2,4} |
| グループ化 | 丸カッコ "()" を使用すると、サブパターンを形成できます。 |
abababab | abab(ab)* |
|
代替 |
パイプ記号「|」 | aaabbb |
aaa(ccc|bbb) |