RE2 構文
-
[アーティクル]
-
-
この記事では、RE2 ライブラリの構文である Kusto 照会言語 (KQL) でサポートされる正規表現構文の概要について説明します。
、 などのmatches regex
parse
正規表現を使用して文字列の一致、選択、抽出を実行する KQL 演算子とreplace_regex()
関数は多数あります。
KQL では、正規表現を 文字列リテラル としてエンコードし、文字列の引用符で囲む規則に従う必要があります。 たとえば、RE2 正規表現 \A
は KQL で として "\\A"
表されます。 余分な円記号は、他の円記号が正規表現 \A
の一部であることを示します。
構文の概要
次の表では、Kusto で正規表現を記述するために使用される RE2 正規表現構文の概要を示します。
Syntax 要素 |
説明 |
単一リテラル |
1 文字は、メタ文字 (* + ? を除く) と一致します。 ( ) |)。次の行で説明されているように、一意の意味を持ちます。 |
メタ 文字 |
メタ文字をリテラルに一致させるには、バックスラッシュでエスケープします。 たとえば、正規表現 \+ はリテラルプラス (+ ) 文字と一致します。 |
代替 |
を使用して 2 つの式を | 代替して、いずれかの式に一致する新しい式を作成します。 たとえば、 e1 | e2 は または e2 のいずれかe1 と一致します。 |
連結 |
2 つの式を連結して、最初の式に続いて 2 番目の式と一致する新しい式を作成します。 たとえば、 e1e2 一致の後に e1 が続 e2 きます。 |
繰り返し |
メタ文字 ? 、、 + および は繰り返し * 演算子です。 たとえば、 e1? は の 0 回または 1 回のe1 e1+ 出現に一致し、 は の 1 回以上のe1 出現に一致し、 と一致する 0 個以上の文字列 (異なる可能性がある) のシーケンスとe1* 一致e1 します。 |
注意
正規表現演算子は、alternation ()、連結 (|
side-by-side 式)、および繰り返し (?
、、*
+
) の順序で評価されます。 評価順序を制御するには、かっこを使用します。
単一の文字式
例 |
説明 |
. |
任意の文字 (場合によっては改行を含む) (s=true) |
[xyz] |
文字クラス |
[^xyz] |
否定の文字クラス |
\d |
Perl 文字クラス |
\D |
否定の Perl 文字クラス |
[[:alpha:]] |
ASCII 文字クラス |
[[:^alpha:]] |
否定の ASCII 文字クラス |
\pN |
Unicode 文字クラス (1 文字の名前) |
\p{Greek} |
Unicode 文字クラス |
\PN |
否定の Unicode 文字クラス (1 文字の名前) |
\P{Greek} |
否定の Unicode 文字クラス |
合成
例 |
説明 |
xy |
x 、その後で y |
x\|y |
x or y (prefer x ) |
繰り返し
例 |
説明 |
x* |
zero or more x , prefer more |
x+ |
one or more x , prefer more |
x? |
zero or one x , prefer one |
x{n,m} |
n or n +1 or ... or m x , prefer more |
x{n,} |
n or more x , prefer more |
x{n} |
exactly n x |
x*? |
zero or more x , prefer fewer |
x+? |
zero or more x , prefer fewer |
x?? |
zero or one x , prefer zero |
x{n,m}? |
n or n +1 or ... or m x , prefer fewer |
x{n,}? |
n or more x , prefer fewer |
x{n}? |
exactly n x |
x{} |
(≡ x* ) (サポート対象外) VIM |
x{-} |
(≡ x*? ) (サポート対象外) VIM |
x{-n} |
(≡ x{n}? ) (サポート対象外) VIM |
x= |
(≡ x? ) (サポート対象外) VIM |
実装の制限: カウントフォーム x{n,m}、x{n,}、および x{n} は、1000 を超える最小または最大の繰り返し回数を作成するフォームを拒否します。 無制限の繰り返しは、この制限の対象になりません。
所有の繰り返し
例 |
説明 |
x*+ |
zero or more x , possessive (NOT SUPPORTED) |
x++ |
one or more x , possessive (NOT SUPPORTED) |
x?+ |
zero or one x , possessive (NOT SUPPORTED) |
x{n,m}+ |
n or ... or m x , possessive (NOT SUPPORTED) |
x{n,}+ |
n or more x , possessive (NOT SUPPORTED) |
x{n}+ |
exactly n x , possessive (NOT SUPPORTED) |
グループ化
例 |
説明 |
(re) |
番号付きキャプチャ グループ (サブマッチ) |
(?P<name>re) |
名前付き & 番号付きキャプチャ グループ (サブマッチ) |
(?<name>re) |
named & 番号付きキャプチャ グループ (サブマッチ) (サポートされていません) |
(?'name're) |
named & 番号付きキャプチャ グループ (サブマッチ) (サポートされていません) |
(?:re) |
非キャプチャ グループ |
(?flags) |
現在のグループ内でフラグを設定する。非キャプチャ |
(?flags:re) |
re の間にフラグを設定します。非キャプチャ |
(?#text) |
コメント (サポート対象外) |
(?\|x\|y\|z) |
ブランチ番号のリセット (サポート対象外) |
(?>re) |
re の所有の一致 (サポート対象外) |
re@> |
re の所有の一致 (サポート対象外) VIM |
%(re) |
非キャプチャ グループ (サポート対象外) VIM |
フラグ
例 |
説明 |
i |
大文字と小文字を区別しない (既定の false) |
m |
複数行モード: ^ と $ は、開始/終了テキストに加えて開始/終了行に一致(既定は false) |
s |
let . 一致 \n (既定は false) |
U |
ungreedy: x* 、x*? 、x+ および x+? の意味を入れ替え (既定は false) |
フラグ構文は xyz (set) または -xyz (clear) または xy-z (set xy, clear z) です。
フラグを使用するには、regexflags=
regexFlags のように kind=
パラメーターと flags
パラメーターを指定kind
する必要があります。
空の文字列
例 |
説明 |
^ |
テキストまたは行の先頭 (m =true) |
$ |
テキストの末尾 (\Z ではなく \z など)、または行 (m =true) |
\A |
テキストの先頭 |
\b |
ASCII ワード境界 (一方に \w 、 もう一方に \W 、 \A 、\z ) |
\B |
ASCII ワード境界ではない |
\g |
検索されるサブテキストの先頭 (サポート対象外) PCRE |
\G |
最後の一致の末尾 (サポート対象外) PERL |
\Z |
テキストの末尾、またはテキストの末尾の改行の前 (サポート対象外) |
\z |
テキストの末尾 |
(?=re) |
テキスト一致の前 re (サポート対象外) |
(?!re) |
テキスト不一致の前 re (サポート対象外) |
(?<=re) |
テキスト一致の後 re (サポート対象外) |
(?<!re) |
テキスト不一致の後 re (サポート対象外) |
re& |
テキスト一致の前 re (サポート対象外) VIM |
re@= |
テキスト一致の前 re (サポート対象外) VIM |
re@! |
テキスト不一致の前 re (サポート対象外) VIM |
re@<= |
テキスト一致の後 re (サポート対象外) VIM |
re@<! |
テキスト不一致の後 re (サポート対象外) VIM |
\zs |
一致の開始を設定 (= \K) (サポート対象外) VIM |
\ze |
一致の終了を設定 (= \K) (サポート対象外) VIM |
\%^ |
ファイルの先頭 (サポート対象外) VIM |
\%$ |
ファイルの末尾 (サポート対象外) VIM |
\%V |
全画面表示 (サポート対象外) VIM |
\%# |
カーソル位置 (サポート対象外) VIM |
\%'m |
m 位置をマーク (サポート対象外) VIM |
\%23l |
23 行目 (サポート対象外) VIM |
\%23c |
23 列目 (サポート対象外) VIM |
\%23v |
仮想の 23 列目 (サポート対象外) VIM |
エスケープ シーケンス
例 |
説明 |
\a |
ベル (≡ \007 ) |
\f |
フォーム フィード (≡ \014 ) |
\t |
水平タブ (≡ \011 ) |
\n |
改行 (≡ \012 ) |
\r |
復帰 (≡ \015 ) |
\v |
垂直タブ文字 (≡ \013 ) |
\* |
リテラル * 、任意の句読点文字の場合 * |
\123 |
8 進数の文字コード (最大 3 桁) |
\x7F |
16 進文字コード (正確に 2 桁) |
\x{10FFFF} |
16 進文字コード |
\C |
UTF-8 モードでもシングル バイトに一致 |
\Q...\E |
... に句読点がある場合でも、リテラル テキスト ... |
\1 |
逆参照 (サポート対象外) |
\b |
後退文字 (サポート対象外) (\010 を使用) |
\cK |
char ^K を制御 (サポート対象外) (\001 などを使用) |
\e |
エスケープ (サポート対象外) (\033 を使用) |
\g1 |
逆参照 (サポート対象外) |
\g{1} |
逆参照 (サポート対象外) |
\g{+1} |
逆参照 (サポート対象外) |
\g{-1} |
逆参照 (サポート対象外) |
\g{name} |
名前付き逆参照 (サポート対象外) |
\g<name> |
サブルーチン呼び出し (サポート対象外) |
\g'name' |
サブルーチン呼び出し (サポート対象外) |
\k<name> |
名前付き逆参照 (サポート対象外) |
\k'name' |
名前付き逆参照 (サポート対象外) |
\lX |
小文字 X (サポート対象外) |
\ux |
大文字 x (サポート対象外) |
\L...\E |
小文字テキスト ... (サポート対象外) |
\K |
$0 の開始のリセット (サポートされていません) |
\N{name} |
名前付き Unicode 文字 (サポート対象外) |
\R |
行の中断 (サポート対象外) |
\U...\E |
大文字テキスト ... (サポート対象外) |
\X |
拡張 Unicode シーケンス (サポート対象外) |
\%d123 |
10 進文字 123 (サポート対象外) VIM |
\%xFF |
16 進文字 FF (サポート対象外) VIM |
\%o123 |
8 進文字 123 (サポート対象外) VIM |
\%u1234 |
Unicode 文字 0x1234 (サポート対象外) VIM |
\%U12345678 |
Unicode 文字 0x12345678 (サポート対象外) VIM |
文字クラスの要素
例 |
説明 |
x |
1 文字 |
A-Z |
文字範囲 (含む) |
\d |
Perl 文字クラス |
[:foo:] |
ASCII 文字クラス foo |
\p{Foo} |
Unicode 文字クラス Foo |
\pF |
Unicode 文字クラス F (1 文字の名前) |
文字クラス要素としての名前付き文字クラス
例 |
説明 |
[\d] |
数字 (≡ \d ) |
[^\d] |
数字ではない (≡ \D ) |
[\D] |
数字ではない (≡ \D ) |
[^\D] |
数字以外ではない (≡ \d ) |
[[:name:]] |
文字クラス内の名前付き ASCII クラス (≡ [:name:] ) |
[^[:name:]] |
否定された文字クラス内の名前付き ASCII クラス (≡ [:^name:] ) |
[\p{Name}] |
文字クラス内の名前付き Unicode プロパティ (≡ \p{Name} ) |
[^\p{Name}] |
否定された文字クラス内の名前付き Unicode プロパティ (≡ \P{Name} ) |
Perl 文字クラス
ASCII のみ
例 |
説明 |
\d |
数字 (≡ [0-9] ) |
\D |
数字なし (≡ [^0-9] ) |
\s |
空白文字 (≡ [\t\n\f\r ] ) |
\S |
空白文字ではない (≡ [^\t\n\f\r ] ) |
\w |
ワード文字 (≡ [0-9A-Za-z_] ) |
\W |
ワード文字ではない (≡ [^0-9A-Za-z_] ) |
\h |
水平間隔 (サポート対象外) |
\H |
水平間隔ではない (サポート対象外) |
\v |
垂直間隔 (サポート対象外) |
\V |
垂直間隔ではない (サポート対象外) |
ASCII 文字クラス
例 |
説明 |
[[:alnum:]] |
英数字 (≡ [0-9A-Za-z] ) |
[[:alpha:]] |
アルファベット (≡ [A-Za-z] ) |
[[:ascii:]] |
ASCII (≡ [\x00-\x7F] ) |
[[:blank:]] |
空白 (≡ [\t ] ) |
[[:cntrl:]] |
制御 (≡ [\x00-\x1F\x7F] ) |
[[:digit:]] |
数字 (≡ [0-9] ) |
[[:graph:]] |
グラフィカル (≡ [!-~] ≡ [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_ { |}~] ) |
[[:lower:]] |
小文字 (≡ [a-z] ) |
[[:print:]] |
印刷可能 (≡ [ -~] ≡ [ [:graph:]] ) |
[[:punct:]] |
句読点 (≡ [!-/:-@[- {-~] ) |
[[:space:]] |
空白文字 (≡ [\t\n\v\f\r ] ) |
[[:upper:]] |
大文字 (≡ [A-Z] ) |
[[:word:]] |
ワード文字 (≡ [0-9A-Za-z_] ) |
[[:xdigit:]] |
16進数 (≡ [0-9A-Fa-f] ) |
Unicode 文字クラス名
全般
例 |
説明 |
C |
other |
Cc |
control |
Cf |
format |
Cn |
未割り当てのコード ポイント (サポート対象外) |
Co |
個人用 |
Cs |
サロゲート |
L |
文字 |
LC |
大文字と小文字の区別 (サポート対象外) |
L& |
大文字と小文字の区別 (サポート対象外) |
Ll |
小文字 |
Lm |
修飾文字 |
Lo |
その他の文字 |
Lt |
タイトル文字 |
Lu |
大文字 |
M |
mark |
Mc |
空白記号 |
Me |
囲み記号 |
Mn |
nonspacing mark |
N |
number |
Nd |
10 進数 |
Nl |
文字番号 |
No |
その他の番号 |
P |
句読点 |
Pc |
接続符号 |
Pd |
ダッシュ符号 |
Pe |
右かっこ |
Pf |
最後の句読点 |
Pi |
最初の句読点 |
Po |
その他の句読点 |
Ps |
左かっこ |
S |
記号 |
Sc |
通貨記号 |
Sk |
アクセント記号 |
Sm |
数学記号 |
So |
その他の記号 |
Z |
separator |
Zl |
行区切り |
Zp |
段落区切り |
Zs |
空白区切り |
スクリプト
スクリプト |
Adlam |
Ahom |
Anatolian_Hieroglyphs |
Arabic |
Armenian |
Avestan |
Balinese |
Bamum |
Bassa_Vah |
Batak |
Bengali |
Bhaiksuki |
Bopomofo |
Brahmi |
Braille |
Buginese |
Buhid |
Canadian_Aboriginal |
Carian |
Caucasian_Albanian |
Chakma |
Cham |
Cherokee |
Chorasmian |
Common |
Coptic |
Cuneiform |
Cypriot |
Cyrillic |
Deseret |
Devanagari |
Dives_Akuru |
Dogra |
Duployan |
Egyptian_Hieroglyphs |
Elbasan |
Elymaic |
Ethiopic |
Georgian |
Glagolitic |
Gothic |
Grantha |
Greek |
Gujarati |
Gunjala_Gondi |
Gurmukhi |
Han |
Hangul |
Hanifi_Rohingya |
Hanunoo |
Hatran |
Hebrew |
Hiragana |
Imperial_Aramaic |
Inherited |
Inscriptional_Pahlavi |
Inscriptional_Parthian |
Javanese |
Kaithi |
Kannada |
Katakana |
Kayah_Li |
Kharoshthi |
Khitan_Small_Script |
Khmer |
Khojki |
Khudawadi |
Lao |
Latin |
Lepcha |
Limbu |
Linear_A |
Linear_B |
Lisu |
Lycian |
Lydian |
Mahajani |
Makasar |
Malayalam |
Mandaic |
Manichaean |
Marchen |
Masaram_Gondi |
Medefaidrin |
Meetei_Mayek |
Mende_Kikakui |
Meroitic_Cursive |
Meroitic_Hieroglyphs |
Miao |
Modi |
Mongolian |
Mro |
Multani |
Myanmar |
Nabataean |
Nandinagari |
New_Tai_Lue |
Newa |
Nko |
Nushu |
Nyiakeng_Puachue_Hmong |
Ogham |
Ol_Chiki |
Old_Hungarian |
Old_Italic |
Old_North_Arabian |
Old_Permic |
Old_Persian |
Old_Sogdian |
Old_South_Arabian |
Old_Turkic |
Odia |
Osage |
Osmanya |
Pahawh_Hmong |
Palmyrene |
Pau_Cin_Hau |
Phags_Pa |
Phoenician |
Psalter_Pahlavi |
Rejang |
Runic |
Samaritan |
Saurashtra |
Sharada |
Shavian |
Siddham |
SignWriting |
Sinhala |
Sogdian |
Sora_Sompeng |
Soyombo |
Sundanese |
Syloti_Nagri |
Syriac |
Tagalog |
Tagbanwa |
Tai_Le |
Tai_Tham |
Tai_Viet |
Takri |
Tamil |
Tangut |
Telugu |
Thaana |
Thai |
Tibetan |
Tifinagh |
Tirhuta |
Ugaritic |
Vai |
Wancho |
Warang_Citi |
Yezidi |
Yi |
Zanabazar_Square |
VIM 文字クラス
例 |
説明 |
\i |
識別子文字 (サポート対象外) VIM |
\I |
\i 数字を除く (サポート対象外) VIM |
\k |
キーワード文字 (サポート対象外) VIM |
\K |
\k 数字を除く (サポート対象外) VIM |
\f |
ファイル名文字 (サポート対象外) VIM |
\F |
\f 数字を除く (サポート対象外) VIM |
\p |
印刷可能文字 (サポート対象外) VIM |
\P |
\p 数字を除く (サポート対象外) VIM |
\s |
空白文字 (≡ [ \t] ) (サポート対象外) VIM |
\S |
空白以外の文字 (≡ [^ \t] ) (サポート対象外) VIM |
\d |
数字 (≡ [0-9] ) VIM |
\D |
\d ではない VIM |
\x |
16 進数字 (≡ [0-9A-Fa-f] ) (サポート対象外) VIM |
\X |
\x ではない (サポート対象外) VIM |
\o |
8 進数字 (≡ [0-7] ) (サポート対象外) VIM |
\O |
\o ではない (サポート対象外) VIM |
\w |
ワード文字 VIM |
\W |
\w ではない VIM |
\h |
ワード文字のヘッド (サポート対象外) VIM |
\H |
\h ではない (サポート対象外) VIM |
\a |
アルファベット (サポート対象外) VIM |
\A |
\a ではない (サポート対象外) VIM |
\l |
小文字 (サポート対象外) VIM |
\L |
小文字ではない (サポート対象外) VIM |
\u |
大文字 (サポート対象外) VIM |
\U |
大文字ではない (サポート対象外) VIM |
\_x |
任意のx に対して\x が新しい列を追加 (サポート対象外) VIM |
\c |
大文字と小文字の区別を無視 (サポート対象外) VIM |
\C |
大文字と小文字を一致 (サポート対象外) VIM |
\m |
マジック (サポート対象外) VIM |
\M |
nomagic (サポート対象外) VIM |
\v |
verymagic (サポート対象外) VIM |
\V |
verynomagic (サポート対象外) VIM |
\Z |
Unicode の組み合わせ文字の違いを無視する (サポート対象外) VIM |
マジック
例 |
説明 |
(?{code}) |
任意の Perl コード (サポート対象外) PERL |
(??{code}) |
延期済み任意の Perl コード (サポート対象外) PERL |
(?n) |
regexp キャプチャ グループ n への再帰呼び出し(サポート対象外) |
(?+n) |
関連キャプチャ グループ +n への再帰呼び出し(サポート対象外) |
(?-n) |
関連キャプチャ グループ -n への再帰呼び出し(サポート対象外) |
(?C) |
PCRE コールアウト (サポート対象外) PCRE |
(?R) |
regexp 全体の再帰呼び出し (≡ (?0) ) (サポート対象外) |
(?&name) |
名前付きグループ への再帰呼び出し(サポート対象外) |
(?P=name) |
名前付き逆参照 (サポート対象外) |
(?P>name) |
名前付きグループ への再帰呼び出し(サポート対象外) |
(?(cond)true\|false) |
条件分岐 (サポート対象外) |
(?(cond)true) |
条件分岐 (サポート対象外) |
(*ACCEPT) |
正規表現を Prolog のようにする(サポート対象外) |
(*COMMIT) |
(サポート対象外) |
(*F) |
(サポート対象外) |
(*FAIL) |
(サポート対象外) |
(*MARK) |
(サポート対象外) |
(*PRUNE) |
(サポート対象外) |
(*SKIP) |
(サポート対象外) |
(*THEN) |
(サポート対象外) |
(*ANY) |
改行規則の設定 (サポート対象外) |
(*ANYCRLF) |
(サポート対象外) |
(*CR) |
(サポート対象外) |
(*CRLF) |
(サポート対象外) |
(*LF) |
(サポート対象外) |
(*BSR_ANYCRLF) |
\R 規約を設定する (サポート対象外) PCRE |
(*BSR_UNICODE) |
(サポート対象外) PCRE |