全部產品
Search
文件中心

Simple Log Service:Regex函數

更新時間:Jul 19, 2024

本文介紹Regex函數的文法規則,包括參數解釋、函數樣本等。

函數列表

類型

函數

說明

值提取函數

regex_select

根據Regex提取合格值。

regex_findall

根據Regex獲得合格所有值列表。

匹配判斷

regex_match

判斷是否匹配Regex。

替換

regex_replace

根據Regex替換字串中的指定字元。

切分

regex_split

將一個字串分割成字串數組。

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"]