本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
支援的規則運算式 (regex) 語法
當您需要超出確切文字比對的彈性模式比對時,請使用規則表達式。Regex 特別適用於:
變數格式:比對不同格式的 IP 地址、時間戳記或 IDs
部分相符:尋找文字中任何位置包含特定模式的日誌項目
複雜條件:符合值範圍、選用字元或其他拼字
例如,使用 %\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}% 來比對任何 IP 地址格式,或%[Ee]rror|[Ff]ail%擷取日誌中的 "Error"/"error" 和 "Fail"/"fail"。
您可以使用以 % (regex 模式之前和之後的百分比符號) 括住的 regex 模式來比對日誌事件中的術語。下列範例顯示的篩選條件模式會傳回包含 AUTHORIZED 關鍵字的所有日誌事件:
%AUTHORIZED%
此篩選條件模式會傳回日誌事件訊息,例如:
[ERROR 401] UNAUTHORIZED REQUEST[SUCCESS 200] AUTHORIZED REQUEST
展開下一節,以檢視 CloudWatch Logs 篩選模式中支援的特定 regex 運算子和語法規則的詳細資訊。
使用 regex 搜尋和篩選日誌資料時,必須用 % 括住運算式。
包含 regex 的篩選條件模式只能包括下列字元:
-
英數字元 – 英數字元包含字母 (A 到 Z 或 a 到 z) 或數字 (0 到 9) 字元。
-
支援的符號字元 – 這些字元包括:'
:'、'_'、'#'、'='、'@'、'/'、';'、',' 和 '-'。例如,由於不支援 '!',因此%something!%會遭拒。 -
支援的運算子 - 包括:'
^'、'$'、'?'、'['、']'、'{'、'}'、'|'、'\'、'*'、'+' 和 '.'。
不支援運算子 ( 和 )。您不可以使用括號來定義子模式。
不支援多位元組字元。
注意
配額
建立指標篩選條件或訂閱篩選條件時,每個日誌群組最多有 5 個包含 regex 的篩選條件模式。
在為指標篩選條件和訂閱篩選條件建立分隔或 JSON 篩選條件模式,或在篩選條件日誌事件或 Live Tail 時,每個篩選模式限制為 2 個 regex。
受支援運算子的使用
-
^:將比對錨定到字串的開頭。例如,%^[hc]at%比對 "hat" 和 "cat",但只比對字串的開頭。 -
$:將比對錨定到字串的結尾。例如,%[hc]at$%比對 "hat" 和 "cat",但只比對字串的結尾。 -
?:符合前一個字詞的零或一次出現。例如,%colou?r%可同時比對 "color" 和 "colour"。 -
[]:定義字元類別。比對包含在括號內的字元清單或字元範圍。例如,%[abc]%比對 "a"、"b" 或 "c";%[a-z]%比對從 "a" 到 "z" 的任何小寫字元;以及%[abcx-z]%比對 "a"、"b"、"c"、"x"、"y" 或 "z"。 -
{m, n}:比對前一個詞彙至少 m 次且不超過 n 次。例如,%a{3,5}%僅比對 "aaa"、"aaaa" 和 "aaaaa"。注意
如果您選擇不定義下限或上限,則可省略 m 或 n。
-
|:布林值 "Or",比對垂直列任一側的詞彙。例如:-
%gra|ey%可以比對「灰色」或「灰色」 -
%^starting|^initializing|^shutting down%可以比對「開始 ...」或「初始化 ...」或「關閉」,但不符合「略過初始化 ...」 -
%abcc|ab[^c]$可以比對「abcc ...」和「aba ...」,但不符合「aac ...」
-
-
\:逸出字元,可讓您使用運算子的文字含義,而非其特殊含義。例如,因為括號被逸出,%\[.\]%比對任何用 "[" 和 "]" 括住的單一字元,例如 "[a]"、"[b]"、"[7]"、"[@]"、"[]]" 和 "[ ]"。注意
%10\.10\.0\.1%是建立可比對 IP 地址 10.10.0.1 的 regex 的正確方法。 -
*:符合先前期限的零個或多個執行個體。例如,%ab*c%可比對 "ac"、"abc" 和 "abbbc";%ab[0-9]*%可比對 "ab"、"ab0" 和 "ab129"。 -
+:符合先前期限的一或多個執行個體。例如,%ab+c%可比對 "abc"、"abbc" 和 "abbbc",而非 "ac"。 -
.:比對任一個單一字元。例如,%.at%比對以 "at" 結尾的任意三個字串,包括 "hat"、"cat"、"bat"、"4at"、"#at" 和 "at" (以空格開始)。注意
建立比對 IP 地址的 regex 時,逸出
.運算子很重要。例如,%10.10.0.1%可比對 "10010,051",這可能不是運算式的實際預期用途。 -
\d、\D:比對數字/非數字字元。例如,%\d%等於%[0-9]%,%\D%等於%[^0-9]%。注意
大寫運算子表示其對應小寫運算子的反轉。
-
\s、\S:比對空白字元/非空白字元。注意
大寫運算子表示其對應小寫運算子的反轉。空白字元包括 tab (
\t)、空格 () 和換行符 (\n) 字元。 -
\w、\W:比對英數字元/非英數字元。例如,%\w%等於%[a-zA-Z_0-9]%,%\W%等於%[^a-zA-Z_0-9]%。注意
大寫運算子表示其對應小寫運算子的反轉。
-
\xhh:比對兩位數十六進位字元的 ASCII 映射。\x為逸出序列,表示下列字元代表 ASCII 的十六進位值。hh指定指向 ASCII 資料表中某個字元的兩個十六進位數字 (0-9 和 A-F)。注意
您可以使用
\xhh來比對篩選條件模式不支援的符號字元。例如,%\x3A%比對:;%\x28%比對(。