tencent cloud

Cloud Log Service

正規表現処理関数

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:02:20
AI翻訳

概要

ログには大量のテキストが含まれています。テキストの処理において、正規表現関数はキーワードの抽出、マスキング、または指定された文字が含まれているかどうかの判定を柔軟に行うことができます。
ログシーンでよく使われる正規表現の例については、オンラインで正規表現をテストをご参照ください。
用途
ログ原文
正規表現
抽出結果
中括弧内の内容を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\{[^\\}]+\\}
{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 10], "orderField": "createTime"}}}
中括弧内の内容を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\[\\S+\\]
[328495eb-b562-478f-9d5d-3bf7e][INFO]
時間を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}
2021-11-08 11:11:08,232
特定の長さの大文字を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
[A-Z]{4}
INFO
特定の長さの小文字を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 15], "orderField": "createTime"}}}
[a-z]{6}
versio
passwo
timest
interf
create
英字と数字を抽出します。
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
([a-z]{3}):([0-9]{4})
com:8080

regex_match関数

関数定義

正規表現に基づいてデータをマッチングし、マッチングが成功したかどうかを返します。完全一致か部分一致かを選択できます。
説明:
一部のシナリオでは、この関数の代わりに str_exist 関数を使用でき、処理効率がより高くなります。
構文記述
regex_match(data, regex="", full=true)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
data
フィールド値
string
はい
-
-
regex
正規表現
string
はい
-
-
full
full=True、完全一致の場合、regexがdataに完全一致することを意味し、regex_match関数はTrueを返します。
full=False、部分一致の場合、regexがdataの一部に一致することを意味し、regex_match関数はTrueを返します。
bool
いいえ
True
T/F

例

例1:正規表現式「\\d{3}.\\d{3}.\\d.\\d」と192.168.0.1が完全に一致するかどうかを判断し、regex_match関数はTrueを返します。正規表現式「\\d{3}.\\d{3}」と192.168.0.1が完全に一致するかどうかを判断し、regex_match関数はFalseを返します。 元のログ:
{"IP":"192.168.0.1", "status": "500"}
加工ルール:
//正規表現式「\\d{3}.\\d{3}.\\d.\\d」とフィールドipの値192.168.0.1が完全に一致するかどうかを判断し、結果を新しいフィールド「matched」に保存します。
t_if_else(regex_match(v("IP"), regex="\\d{3}.\\d{3}.\\d.\\d", full=True), fields_set("matched", True),fields_set("matched", False))
//正規表現式「\\d{3}.\\d{3}」とフィールドipの値192.168.0.1が完全に一致するかどうか:
t_if_else(regex_match(v("IP"), regex="\\d{3}.\\d{3}", full=True), fields_set("matched2", True),fields_set("matched2", False))
{"IP":"192.168.0.1","matched":"true","matched2":"false","status":"500"}
例2:正規表現式「\\d{3}.\\d{3}」とフィールドIPの値192.168.0.1が部分一致するかどうかを判断し、regex_match関数はTrueを返します。 元のログ:
{"IP":"192.168.0.1", "status": "500"}
加工ルール:
t_if(regex_match(v("IP"), regex="\\d{3}.\\d{3}", full=False), fields_set("matched", True))
加工結果:
{"IP":"192.168.0.1","matched":"true","status":"500"}

regex_select関数

関数定義

正規表現に基づいてデータをマッチングし、対応する部分一致の結果を返します。一致結果の何番目の式か、および何番目のグループかを指定できます(部分一致+キャプチャグループ番号の指定)。最終的に一致結果がない場合は、空の文字列を返します。

構文記述

regex_select(data, regex="", index=1, group=1)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
data
フィールド値
string
はい
-
-
regex
正規表現
string
はい
-
-
index
マッチング結果内の何番目の式か
number
いいえ
デフォルトは最初の1つです。
-
group
マッチング結果内の何番目のグループか
number
いいえ
デフォルトは最初の1つです。
-

例

正規表現に基づいて、フィールド値に対して異なる切り取りを行います。
元のログ:
{"data":"hello123,world456", "status": "500"}
加工ルール:
fields_set("match_result", regex_select(v("data"), regex="[a-z]+(\\d+)",index=0, group=0))
fields_set("match_result1", regex_select(v("data"), regex="[a-z]+(\\d+)", index=1, group=0))
fields_set("match_result2", regex_select(v("data"), regex="([a-z]+)(\\d+)",index=0, group=0))
fields_set("match_result3", regex_select(v("data"), regex="([a-z]+)(\\d+)",index=0, group=1))
加工結果:
{"match_result2":"hello123","match_result1":"world456","data":"hello123,world456","match_result3":"hello","match_result":"hello123","status":"500"}

regex_split関数

関数定義

正規表現に基づいてデータを分割し、JSON Array文字列を返します(部分一致)。

構文記述

regex_split(data, regex=\\"\\", limit=100)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
data
フィールド値
string
はい
-
-
regex
正規表現
string
はい
-
-
limit
分割最大配列長。長さを超えた場合、残りの未分割部分は1つの要素として配列に追加されます。
number
いいえ
デフォルト値は100です。
-

例

元のログ:
{"data":"hello123world456", "status": "500"}
加工ルール:
fields_set("split_result", regex_split(v("data"), regex="\\d+"))
加工結果:
{"data":"hello123world456","split_result":"[\\"hello\\",\\"world\\"]","status":"500"}

regex_replace関数

関数定義

正規表現に基づいてマッチングおよび置換(部分一致)を行います。主にマスキングシナリオで使用されます。

構文記述

regex_replace(data, regex="", replace="", count=0)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
data
フィールド値
string
はい
-
-
regex
正規表現
string
はい
-
-
replace
対象文字列。この文字列を使用してマッチング結果を置換します。
string
はい
-
-
count
置換回数。デフォルトは0で、すべて置換します。
number
いいえ
デフォルト値は0です。
-

例

例1:正規表現に基づいて、フィールド値を置換します。 元のログ:
{"data":"hello123world456", "status": "500"}
加工ルール:
fields_set("replace_result", regex_replace(v("data"), regex="\\d+", replace="", count=0))
加工結果:
{"replace_result":"helloworld","data":"hello123world456","status":"500"}
例2:ユーザーID、携帯電話番号、IPアドレスをマスキングします。 元のログ:
{"Id": "dev@12345","Ip": "11.111.137.225","phonenumber": "13912345678"}
加工ルール:
//Idフィールドをマスキング処理し、結果はdev@***45です。
fields_set("Id",regex_replace(v("Id"),regex="\\d{3}", replace="***",count=0))
fields_set("Id",regex_replace(v("Id"),regex="\\S{2}", replace="**",count=1))
//phonenumberフィールドをマスキング処理し、中間の4桁を****に置換します。結果は139****5678です。
fields_set("phonenumber",regex_replace(v("phonenumber"),regex="(\\d{0,3})\\d{4}(\\d{4})", replace="$1****$2"))
//IPフィールドをマスキング処理し、2番目のセグメントを***に置換します。結果は11.***137.225です。
fields_set("Ip",regex_replace(v("Ip"),regex="(\\d+\\.)\\d+(\\.\\d+\\.\\d+)", replace="$1***$2",count=0))
加工結果:
{"Id":"**v@***45","Ip":"11.***.137.225","phonenumber":"139****5678"}

regex_findall関数

関数定義

正規表現に基づいてマッチングを行い、マッチング結果をJSON配列に追加し、Array文字列を返します(部分一致)。

構文記述

regex_findall(data, regex="")

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
data
フィールド値
string
はい
-
-
regex
正規表現
string
はい
-
-

例

元のログ:
{"data":"hello123world456", "status": "500"}
加工ルール:
fields_set("result", regex_findall(v("data"), regex="\\d+"))
加工結果:
{"result":"[\\"123\\",\\"456\\"]","data":"hello123world456","status":"500"}

sensitive_detection関数

関数定義

機密情報を検出します。例えば、身分証明書、銀行カードなどの機密情報です。
注意:
マスキングオプションreplace_itemsは慎重に使用してください。マスキング後のデータは復元できません。

構文記述

sensitive_detection(scope="", ratio=1, discover_items="", replace_items="")

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
scope
検出フィールド名
string
はい
ALL_FIELDS
-
sample_ratio
検出割合、値は以下のとおりです。
1:すべての検出を表します。
0.5:サンプリング50%で検出を行うことを表します。
number
はい
-
-
discover_items
検出項目、カンマ区切り
string
はい
-
CHINA_PHONE_NUM,EMAIL,CHINA_IDCARD, ADDR,DEBIT_CARD,CREDIT_CARD,CHINA_PASSPORT,MAC_ADDR,IP,DOMAIN,LOCATION,VIN,PLATE_NUMBER,NAME,PASSWORD,TOKEN
replace_items
マスキング項目、カンマ区切り
string
はい
-
CHINA_PHONE_NUM,EMAIL,CHINA_IDCARD, ADDR,DEBIT_CARD,CREDIT_CARD,CHINA_PASSPORT,MAC_ADDR,IP,VIN,PASSWORD,TOKEN,NAME

例

元のログ:
{
"sensitive_field1": "CLS log 13912345678 my car JTJHT00W274025559 www.tencent.com CLSデータ加工",
"sensitive_field2": "etl@tenctent.com ",
"NON_sensitive_field": "hello world"
}
加工ルール:
/*scope=ALL_FIELDSは、ログ全体のすべてのフィールドを検索することを意味します。
sample_ratio=1は、すべてのログに対して機密情報の検出を行うことを意味します。
電話、Emailを検出します。
また、電話情報をマスキング(隠蔽)します。replace_itemsオプションは慎重に使用してください。マスキング後は復元できません。*/
sensitive_detection(scope="ALL_FIELDS", sample_ratio=1, discover_items="CHINA_PHONE_NUM,EMAIL",replace_items="CHINA_PHONE_NUM")
加工結果:
{
"NON_sensitive_field":"hello world",
"SENSITIVE_FLAGS":"CHINA_PHONE_NUM,EMAIL",//電話番号とメールの2種類の機密情報が検出されました。
//電話番号をマスキングしました。
"sensitive_field1":"CLS log 139****5678 my car JTJHT00W274025559 www.tencent.com CLSデータ加工",
"sensitive_field2":"etl@tenctent.com "
}

機密検出項目の説明:

機密情報項目
説明
例
正規表現
マスキング結果
CHINA_PHONE_NUM
中国の携帯電話番号
13123456789
(1\\\\d{2})(\\\\d{4})(\\\\d{4})
139****1234
EMAIL
メールアドレス
abcd@nio.com
([A-Za-z0-9._%+-]+)(@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,})
***@nio.com
CHINA_IDCARD
中国の身分証
420101199004135043
(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|[7-9]1)\\\\d{4}((18|19|20)\\\\d{2}((0[1-9])|(1[0-2]))((0[1-9]|1\\\\d|2[0-8])|(1[0-2](29|30)))|(1[013-9]|2[0-35-9])31)\\\\d{3}[0-9Xx]
420101****5043
ADDR
中国語の住所
北京市海淀区北三环西路43号
((.{1,6}?(省|市|自治区|自治州|県|区|鎮|郷))){1,3}((.{1,6}(路|街|里|街道|村|屯|組|小区|大厦|号|広場))){1,3}((.{1,6}(号楼|单元|層|室|戸|号|房))|(\\\\d+-\\\\d+-\\\\d+)){0,3}
すべてマスキングされ****
DEBIT_CARD
デビットカード
6225092716776464882
(62\\\\d{5,11})(\\\\d{6})
6225092716776****
CREDIT_CARD 
クレジットカード
4539138994741478
([1-9]\\\\d{3}[\\\\s-]?\\\\d{4}[\\\\s-]?\\\\d{4}[\\\\s-]?)(\\\\d{4})
453913899474***
CHINA_PASSPORT
中国のパスポート
G86067430
((1[45]\\\\d{7})|([P|p|S|s]\\\\d{7})|([S|s|G|g|E|e]\\\\d{8})|([Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\\\\d{8})|([H|h|M|m]\\\\d{8,10}))
すべてマスキングされ****
MACADDR  
Mac
住所
06-06-06-aa-bb-cc
([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})
06-06-06-aa-****cc
IP   
IP
住所
120.32.23.137
((?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
120.32.23.***
DOMAIN
ドメイン
www.abc123.com
((\\\\w|(\\\\w[\\\\w-]{0,86}\\\\w))\\\\.(\\\\w|(\\\\w[\\\\w-]{0,73}\\\\w))\\\\.((\\\\w{2,12}\\\\.\\\\w{2,12})|(\\\\w{2,25})))|((\\\\w|(\\\\w[\\\\w-]{0,162}\\\\w))\\\\.((\\\\w{2,12}\\\\.\\\\w{2,12})|(\\\\w{2,25})))
マスキング機能は提供されません。
LOCATION
経緯度
31.886551,120.443934
[\\\\-\\+]?0(\\.\\d{4,10})|([1-9](\\d)?)(\\.\\d{4,10})|1[0-7]\\d{1}(\\.\\d{4,10})|180\\.0{1,10}
マスキング機能は提供されません。
VIN
車台番号
LJ1EEAUU8J7700492
([A-HJ-NPR-Z\\\\d]{10})([A-HJ-NPR-Z\\\\d]{7})
LJ1EEAUU8J****
plate_number
ナンバープレート番号
京 N5J980
[京津滬渝冀豫雲遼黒湘皖魯新蘇浙贛鄂桂甘晋蒙陝吉閩貴粤青藏川寧琼使領][A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛学警港澳]
マスキング機能は提供されません。
NAME
名前
ログフィールド名:姓名
フィールド名:["real_name","family_name","last_name","姓名","名字","用户名", "收件人","recv_person", "receive_person"]
すべてマスキングされ****
password
パスワード
ログフィールド名:password
フィールド名:["password", "passwd", "secret", "pass", "密码", "凭证"]
すべてマスキングされ****
token
token
ログフィールド名:token
フィールド名:["token", "account_key", "api_key", "授权码"]
すべてマスキングされ****

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック