本文档主要介绍正则表达式函数的语法规则,包括参数解释、函数示例等。

函数列表

类型 函数 说明
值提取函数 regex_select 根据正则表达式提取特定的值。
regex_findall 根据正则表达式获得符合条件的所有值的一个列表。
匹配判断 regex_match 判断是否匹配正则表达式。
替换 regex_replace 根据正则表达式替换字符串中的指定字符。
切分 regex_split 将一个字符串分割成字符串数组。

regex_select

  • 函数格式
    regex_select(值, r"正则表达式", mi=None, gi=None)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    任意 填入要匹配的值。
    正则表达式 String 要做匹配的正则表达式。
    mi int 表示匹配到的第几个表达式,默认None,表示第一个。
    gi int 表示匹配到的第几个分组,默认None,表示第一个。
  • 返回结果

    返回提取的值。

  • 函数示例
    • 示例1:提取str中的数字。
      原始日志:
      str: iZbp1a65x3r1vhpe94fi2qZ
      加工规则:
      e_set("regex", regex_select(v("str"),r"\d+"))
      加工结果:
      str: iZbp1a65x3r1vhpe94fi2qZ
      regex:  1
    • 示例2
      原始日志:
      str: abc123 xyz456
      加工规则:
      e_set("regex", regex_select(v("str"),r"\d+",mi=1))
      e_set("regex2", regex_select(v("str"),r"\d+"))
      加工结果:
      str: abc123 xyz456
      regex:   456
      regex2:  123
    • 示例3
      原始日志:
      str: abc123 xyz456
      加工规则:
      e_set("regex", regex_select(v("str"),r"[a-z]+(\d+)",gi=0))
      e_set("regex2", regex_select(v("str"),r"[a-z]+(\d+)",mi=1,gi=0))
      e_set("regex3", regex_select(v("str"),r"([a-z]+)(\d+)",gi=0))
      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(值, r"正则表达式")
  • 参数说明
    参数名称 参数类型 是否必填 说明
    任意 要匹配的值。
    正则表达式 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(值, r"正则表达式", full=False)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    任意 要匹配的值。
    正则表达式 String 要做匹配的正则表达式。
    full Bool 是否完全匹配,默认为False。
  • 返回结果

    返回True或者False。

  • 函数示例:匹配出str所有的数字。
    原始日志:
    str: iZbp1a65x3r1vhpe94fi2qZ
    加工规则:
    e_set("regex_match", regex_match(v("str"),r"\d+"))
    e_set("regex_match2", regex_match(v("str"),r"\d+",full=True))
    加工结果:
    str: iZbp1a65x3r1vhpe94fi2qZ
    regex_match:  True
    regex_match2:  False

regex_replace

  • 函数格式
    regex_replace(值, r"正则表达式", replace="", count=0)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    任意 要被替换的值。
    正则表达式 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: 13012345678
      加工规则:
      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: 13012345678
      sec_iphone: 130****5678

regex_split

  • 函数格式
    regex_split(值, r"正则表达式", maxsplit=0)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    任意 要分裂的值。
    正则表达式 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"]