RE2 語法
本文提供 Kusto 查詢語言 (KQL) 支援的正則表達式語法概觀,這是 RE2 連結庫的語法。
有數個 KQL 運算符和函式會使用正規表示式執行字串比對、選取和擷取,例如 matches regex
、 parse
和 replace_regex()
。
在 KQL 中,正則表達式必須編碼為 字串常值 ,並遵循字串引號規則。 例如,RE2 正規表示式 \A
以 KQL 表示為 "\\A"
。 額外的反斜杠表示其他反斜杠是正則表達式 \A
的一部分。
語法概觀
下表概觀 RE2 正則表達式語法,用來在 Kusto 中撰寫正則表達式。
Syntax 元素 |
Description |
單一常值 |
單一字元會自行比對,但中繼字元 (* + ? ( ) |) ,其具有下列數據列中所述的唯一意義。 |
Metacharacters |
若要以常值比對中繼字元,請使用反斜杠加以逸出。 例如,正則表達式 \+ 會比對常值加上 (+ ) 字元。 |
替代 |
替代兩個表達式, | 以建立符合任一表達式的新運算式。 例如, e1 | e2 符合 e1 或 e2 。 |
串連 |
串連兩個表達式,以建立符合第一個運算式後面接著第二個表達式的新表達式。 例如, e1e2 相符項目 e1 後面接著 e2 。 |
重複 |
中繼字元 ? 、 + 和 * 是重複運算子。 例如, e1? 比對零或一次出現 e1 , e1+ 符合一或多個出現的 e1 ,且 e1* 符合符合的零或多個字串 e1 序列。 |
注意
正則表達式運算符會依此順序進行評估:交替 () |
、串連 (並排運算式) ,以及重複 (?
、 +
*
) 。 使用括號來控制評估順序。
單一字元運算式
範例 |
描述 |
. |
任何字元,可能包含新行字元 (s = true) |
[xyz] |
字元類別 |
[^xyz] |
否定字元類別 |
\d |
Perl 字元類別 |
\D |
否定 Perl 字元類別 |
[[:alpha:]] |
ASCII 字元類別 |
[[:^alpha:]] |
否定 ASCII 字元類別 |
\pN |
Unicode 字元類別 (單字母名稱) |
\p{Greek} |
Unicode 字元類別 |
\PN |
否定 Unicode 字元類別 (單字母名稱) |
\P{Greek} |
否定 Unicode 字元類別 |
合成物
範例 |
描述 |
xy |
x ,接著執行 y |
x\|y |
x 或 y (偏好 x ) |
重複次數
範例 |
描述 |
x* |
零或更多 x ,偏好更多 |
x+ |
一或更多 x ,偏好更多 |
x? |
零或一 x ,偏好一 |
x{n,m} |
n 或 n +1 或 ... 或 m x ,偏好更多 |
x{n,} |
n 或更多 x ,偏好更多 |
x{n} |
完全符合 n x |
x*? |
零或更多 x ,偏好更少 |
x+? |
一或更多 x ,偏好更少 |
x?? |
零或一 x ,偏好零 |
x{n,m}? |
n 或 n +1 或 ... 或 m x ,偏好更少 |
x{n,}? |
n 或更多 x ,偏好更少 |
x{n}? |
完全符合 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*+ |
零或更多 x ,所有格 (不支援) |
x++ |
一或更多 x ,所有格 (不支援) |
x?+ |
零或一 x ,所有格 (不支援) |
x{n,m}+ |
n 或 ... 或 m x ,所有格 (不支援) |
x{n,}+ |
n 或更多 x ,所有格 (不支援) |
x{n}+ |
完全符合 n x ,所有格 (不支援) |
群組
範例 |
描述 |
(re) |
已編號擷取群組 (子相符) |
(?P<name>re) |
具名 & 編號的擷取群組 (子配對) |
(?<name>re) |
具名 & 編號的擷取群組 (子配對) (不支援) |
(?'name're) |
具名 & 編號的擷取群組 (子配對) (不支援) |
(?:re) |
非擷取群組 |
(?flags) |
設定目前群組內的旗標;非擷取 |
(?flags:re) |
在重新期間設定旗標;非擷取 |
(?#text) |
註解 (不支援) |
(?\|x\|y\|z) |
分支編號重設 (不支援) |
(?>re) |
re 的所有格相符 (不支援) |
re@> |
re 的所有格相符 (不支援) VIM |
%(re) |
不支援非擷取群組 () VIM |
Flags
範例 |
描述 |
i |
不區分大小寫 (預設為 false) |
m |
多行模式:除了開始/結束文字之外,^ 和 $ 也會比對開始/結束行 (預設為 false) |
s |
讓 . 比對 \n (預設為 false) |
U |
非窮盡:交換 x* 和 x*? 、x+ 和 x+? 等的意義 (預設為 false) |
旗標語法為 xyz (設定) 或 -xyz (清除) 或 xy-z (設定 xy、清除 z)。
若要使用旗標,您必須指定 kind
和 flags
參數,如下所示: kind=
regexflags=
regexFlags。
空白字串
範例 |
描述 |
^ |
在文字或行的開頭 (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 |
設定對比結束 (不支援) 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 |
八進位字元碼 (最多三位數) |
\x7F |
十六進位字元碼 (剛好兩位數) |
\x{10FFFF} |
十六進位字元碼 |
\C |
即使在 UTF-8 模式中,也符合單一位元組 |
\Q...\E |
常值文字 ... (即使 ... 有標點符號) |
\1 |
反向參考 (不支援) |
\b |
退格鍵 (不支援) (使用 \010 ) |
\cK |
控制 Char ^K (不支援) (使用 \001 等) |
\e |
Escape 鍵 (不支援) (使用 \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 |
十進位字元 123 (不支援) VIM |
\%xFF |
十六進位字元 FF (不支援) VIM |
\%o123 |
八進位字元 123 (不支援) VIM |
\%u1234 |
Unicode 字元 0x1234 (不支援) VIM |
\%U12345678 |
Unicode 字元 0x12345678 (不支援) VIM |
字元類別元素
範例 |
描述 |
x |
單一字元 |
A-Z |
字元範圍 (內含) |
\d |
Perl 字元類別 |
[:foo:] |
ASCII 字元類別 foo |
\p{Foo} |
Unicode 字元類別 Foo |
\pF |
Unicode 字元類別 F (單字母名稱) |
將字元類別命名為字元類別元素
範例 |
描述 |
[\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:]] |
十六進位數字 (≡ [0-9A-Fa-f] ) |
Unicode 字元類別名稱
一般
範例 |
描述 |
C |
其他 |
Cc |
控制 |
Cf |
format |
Cn |
未指派的程式碼項目 (不支援) |
Co |
私用 |
Cs |
代理 |
L |
字母 |
LC |
大小寫字母 (不支援) |
L& |
大小寫字母 (不支援) |
Ll |
小寫字母 |
Lm |
修飾字母 |
Lo |
其他字母 |
Lt |
字首大寫字母 |
Lu |
大寫字母 |
M |
mark |
Mc |
間距標記 |
Me |
封閉標記 |
Mn |
非步調標記 |
N |
數字 |
Nd |
十進位數字 |
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 |
) VIM 不支援的非空格字元 (≡ [^ \t] ) ( |
\d |
數字 (≡ [0-9] ) VIM |
\D |
非 \d VIM |
\x |
十六進位數字 (≡ [0-9A-Fa-f] ) (不支援) VIM |
\X |
非 \x (不支援) VIM |
\o |
八進位數字 (≡ [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 |
magic (不支援) VIM |
\M |
nomagic (不支援) VIM |
\v |
verymagic (不支援) VIM |
\V |
verynomagic (不支援) VIM |
\Z |
忽略 Unicode 合併字元的差異 (不支援) VIM |
Magic
範例 |
描述 |
(?{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) |
讓 RegExps 更像初構 (不支援) |
(*COMMIT) |
(不支援) |
(*F) |
(不支援) |
(*FAIL) |
(不支援) |
(*MARK) |
(不支援) |
(*PRUNE) |
(不支援) |
(*SKIP) |
(不支援) |
(*THEN) |
(不支援) |
(*ANY) |
設定新行慣例 (不支援) |
(*ANYCRLF) |
(不支援) |
(*CR) |
(不支援) |
(*CRLF) |
(不支援) |
(*LF) |
(不支援) |
(*BSR_ANYCRLF) |
設定 \R 慣例 (不支援) PCRE |
(*BSR_UNICODE) |
(不支援) PCRE |