本文介紹Regex函數的文法規則,包括參數解釋、函數樣本等。
函數列表
類型 | 函數 | 說明 |
值提取函數 | 根據Regex提取合格值。 | |
根據Regex獲得合格所有值列表。 | ||
匹配判斷 | 判斷是否匹配Regex。 | |
替換 | 根據Regex替換字串中的指定字元。 | |
切分 | 將一個字串分割成字串數組。 |
regex_select
根據Regex提取合格值。
函數格式
regex_select(value, r"regular expression", mi=None, gi=None)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
填入要匹配的值。
regular expression
String
是
匹配的Regex。
mi
int
否
表示匹配到的第幾個運算式,預設None和0,表示第一個。
gi
int
否
表示匹配到的第幾個分組,預設None和0,表示第一個。
返回結果
返回提取的值。
函數樣本
樣本1:提取欄位str中符合Regex的第一個值。
原始日誌
str: iZbp1a65x3r1vhpe94fi2qZ
加工規則
e_set("regex", regex_select(v("str"), r"\d+")) e_set("regex2", regex_select(v("str"), r"\d+", mi=None)) e_set("regex3", regex_select(v("str"), r"\d+", mi=0))
加工結果
regex:1 regex2:1 regex3:1 str:iZbp1a65x3r1vhpe94fi2qZ
樣本2:提取欄位str中符合Regex的第一個和第二個的值。
原始日誌
str: abc123 xyz456
加工規則
# 提取欄位str中符合Regex的第一個值。 e_set("regex", regex_select(v("str"), r"\d+")) # 提取欄位str中符合Regex的第二個值。 e_set("regex2", regex_select(v("str"), r"\d+", mi=1))
加工結果
regex: 123 regex2: 456 str: abc123 xyz456
樣本3
原始日誌
str: abc123 xyz456
加工規則
# 提取欄位str中符合Regex的第一個運算式的第一個分組的值。 e_set("regex", regex_select(v("str"),r"[a-z]+(\d+)",gi=0)) # 提取欄位str中符合Regex的第二個運算式的第一個分組的值。 e_set("regex2", regex_select(v("str"),r"[a-z]+(\d+)",mi=1,gi=0)) # 提取欄位str中符合Regex的第一個運算式的第一個分組的值。 e_set("regex3", regex_select(v("str"),r"([a-z]+)(\d+)",gi=0)) # 提取欄位str中符合Regex的第一個運算式的第二個分組的值。 e_set("regex4", regex_select(v("str"),r"([a-z]+)(\d+)",gi=1))
加工結果
str: abc123 xyz456 regex: 123 regex2: 456 regex3: abc regex4: 123
regex_findall
根據Regex獲得合格所有值的一個列表。
函數格式
regex_findall(value, r"regular expression")
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要匹配的值。
regular expression
String
是
Regex。
返回結果
返回獲得合格列表。
函數樣本
擷取欄位str所有的數字。
原始日誌
str: iZbp1a65x3r1vhpe94fi2qZ
加工規則
e_set("regex_findall", regex_findall(v("str"),r"\d+"))
加工結果
str: iZbp1a65x3r1vhpe94fi2qZ regex_findall: ["1", "65", "3", "1", "94", "2"]
regex_match
判斷是否匹配Regex。
函數格式
regex_match(value, r"regular expression", full=False)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要匹配的值。
regular expression
String
是
Regex。
full
Bool
否
是否完全符合,預設為False。
返回結果
返回True或者False。
函數樣本
判斷欄位str是否包含數字。
原始日誌
str: iZbp1a65x3r1vhpe94fi2qZ
加工規則
# 判斷欄位str是否包含數字。 e_set("regex_match", regex_match(v("str"),r"\d+")) # 判斷欄位str是否全部為數字。 e_set("regex_match2", regex_match(v("str"),r"\d+",full=True))
加工結果
str: iZbp1a65x3r1vhpe94fi2qZ regex_match: true regex_match2: false
regex_replace
根據Regex替換字串中的指定字元。
函數格式
regex_replace(value, r"regular expression", replace="", count=0)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要被替換的值。
regular expression
String
是
Regex。
replace
String
否
替換後的新字元。預設為空白,表示刪除字元。
支援Regex,例如
r"\1****\2"
,表示替換後的字串要滿足該Regex。\1
代表第一個分組。\2
代表第二個分組。
count
Number
否
替換次數。 預設為0,表示替換所有。
返回結果
返回替換後的新字串。
函數樣本
樣本1:把str中的所有數字用13替換。
原始日誌
str: iZbp1a65x3r1vhpe94fi2qZ replace: 13
加工規則
e_set("regex_replace", regex_replace(v("str"),r"\d+",v("replace")))
加工結果
str: iZbp1a65x3r1vhpe94fi2qZ replace: 13 regex_replace: iZbp13a13x13r13vhpe13fi13qZ
樣本2:對手機號中間4位元字進行脫敏處理。
原始日誌
iphone: 13900001234
加工規則
e_set( "sec_iphone", regex_replace(v("iphone"), r"(\d{0,3})\d{4}(\d{4})", replace=r"\1****\2"), )
說明replace=r"\1****\2"
表示替換後的字串要滿足Regexr"\1****\2"
。\1
代表第一個分組,即(\d{0,3})
。\2
代表第二個分組,即(\d{4})
。
加工結果
iphone: 13900001234 sec_iphone: 139****1234
regex_split
將一個字串分割成字串數組。
函數格式
regex_split(value, r"regular expression", maxsplit=0)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要分裂的值。
regular expression
String
是
Regex。
maxsplit
int
否
最大分裂匹配次數。預設為0表示全部匹配分裂,如果為1,表示匹配中一個就分裂,剩餘不再進行匹配。
返回結果
返回分割後的數組列表。
函數樣本
將欄位str按照數字進行分裂。
原始日誌
str: iZbp1a65x3r1vhpe94fi2qZ
加工規則
e_set("regex_split", regex_split(v("str"),r"\d+"))
加工結果
str: iZbp1a65x3r1vhpe94fi2qZ regex_split: ["iZbp", "a", "x", "r", "vhpe", "fi", "qZ"]