本文介紹正則表達式函數的語法規則,包括參數解釋、函數示例等。
函數列表
類型 | 函數 | 說明 |
值提取函數 | 根據正則表達式提取符合條件的值。 | |
根據正則表達式獲得符合條件的所有值列表。 | ||
匹配判斷 | 判斷是否匹配正則表達式。 | |
替換 | 根據正則表達式替換字符串中的指定字符。 | |
切分 | 將一個字符串分割成字符串數組。 |
regex_select
根據正則表達式提取符合條件的值。
函數格式
regex_select(value, r"regular expression", mi=None, gi=None)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
填入要匹配的值。
regular expression
String
是
匹配的正則表達式。
mi
int
否
表示匹配到的第幾個表達式,默認None和0,表示第一個。
gi
int
否
表示匹配到的第幾個分組,默認None和0,表示第一個。
返回結果
返回提取的值。
函數示例
示例1:提取字段str中符合正則表達式的第一個值。
原始日志
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中符合正則表達式的第一個和第二個的值。
原始日志
str: abc123 xyz456
加工規則
# 提取字段str中符合正則表達式的第一個值。 e_set("regex", regex_select(v("str"), r"\d+")) # 提取字段str中符合正則表達式的第二個值。 e_set("regex2", regex_select(v("str"), r"\d+", mi=1))
加工結果
regex: 123 regex2: 456 str: abc123 xyz456
示例3
原始日志
str: abc123 xyz456
加工規則
# 提取字段str中符合正則表達式的第一個表達式的第一個分組的值。 e_set("regex", regex_select(v("str"),r"[a-z]+(\d+)",gi=0)) # 提取字段str中符合正則表達式的第二個表達式的第一個分組的值。 e_set("regex2", regex_select(v("str"),r"[a-z]+(\d+)",mi=1,gi=0)) # 提取字段str中符合正則表達式的第一個表達式的第一個分組的值。 e_set("regex3", regex_select(v("str"),r"([a-z]+)(\d+)",gi=0)) # 提取字段str中符合正則表達式的第一個表達式的第二個分組的值。 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_findall(value, r"regular expression")
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要匹配的值。
regular expression
String
是
正則表達式。
返回結果
返回獲得符合條件的列表。
函數示例
獲取字段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_match(value, r"regular expression", full=False)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要匹配的值。
regular expression
String
是
正則表達式。
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_replace(value, r"regular expression", replace="", count=0)
參數說明
參數名稱
參數類型
是否必填
說明
value
任意
是
要被替換的值。
regular expression
String
是
正則表達式。
replace
String
否
替換后的新字符。默認為空,表示刪除字符。
支持正則表達式,例如
r"\1****\2"
,表示替換后的字符串要滿足該正則表達式。\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"
表示替換后的字符串要滿足正則表達式r"\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
是
正則表達式。
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"]