日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

正則表達式

本文介紹正則表達式的匹配方式以及特殊字符的轉(zhuǎn)義處理。

完全匹配

正則表達式的值與字符串完全一致,則是完全匹配。例如1234\d+完全匹配。

有些函數(shù)支持部分匹配,您可以在開頭與結(jié)尾添加^$將部分匹配的場景變成完全匹配。例如正則表達式為^正則表達式$。更多信息,請參見正則表達式操作

不同函數(shù)的匹配模式如表格所示。

分類

函數(shù)

匹配模式

全局操作函數(shù)

e_regex

部分匹配

e_keep_fields

完全匹配

e_drop_fields

完全匹配

e_rename

完全匹配

e_kv

部分匹配

表達式函數(shù)

e_match

參數(shù)控制,默認為完全匹配。

e_search

部分匹配

regex_select

部分匹配

regex_findall

部分匹配

regex_match

參數(shù)控制,默認為部分匹配。

regex_replace

部分匹配

regex_split

部分匹配

匹配模式示例。

  • regex_match("abc123", r"\d+"):匹配。默認為部分匹配模式。

  • regex_match("abc123", r"\d+", full=True):不匹配。設(shè)置了完全匹配模式。

  • regex_match("abc123", r"^\d+$"):不匹配。等同于完全匹配模式。

  • e_search(r'status~="\d+"'):根據(jù)status字段的值匹配。等同于部分匹配模式。

  • e_search(r'status~="^\d+$"'):根據(jù)status字段的值匹配。等同于完全匹配模式。

字符轉(zhuǎn)義

正則表達式中可能會包含特殊字符,如果需要獲取這些字符本身的含義,就需要進行轉(zhuǎn)義。 您可以通過以下方法進行轉(zhuǎn)義:

  • 通過反斜線(\)進行轉(zhuǎn)義

    更多信息,請參見字符轉(zhuǎn)義

  • 通過str_regex_escape函數(shù)進行轉(zhuǎn)義。

    • 例如e_drop_fields(str_regex_escape("abc.test"))表示丟棄字段abc.test

    • 例如e_drop_fields("abc.test")則表示丟棄符合abc?test的字段,其中半角問號(?)表示任意字符。

分組

分組是將需要重復(fù)的表達式用半角圓括號()包裹起來,然后對這個表達式進行重復(fù)引用。以下示例為分組和不分組的區(qū)別:

"""
處理前日志為:
SourceIP: 192.0.2.1
處理后日志為:
SourceIP: 192.0.2.1
ip: 192.0.2.1
"""
# 不分組:
e_regex("SourceIP",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
# 分組:
e_regex("SourceIP", "\d{1,3}(.\d{1,3}){3}", "ip")

捕獲組

捕獲組會將捕獲到的文本內(nèi)容緩存在內(nèi)存中,可以通過反向引用在其他表達式中使用。形式上捕獲組的半角圓括號()中不是以?:開頭。

默認情況下,每個捕獲組會自動擁有一個編號。從左向右,以分組的左括號為標志,第一個出現(xiàn)的分組的編號為1,第二個為2,以此類推。例如,以下示例擁有3個分組:

(\d{4})-(\d{2}-(\d{2}))

1     1 2      3     32

如果正則表達式中同時存在普通分組和命名分組,那么分組的編號規(guī)則是先對普通捕獲組進行編號,再對命名捕獲組進行編號。日志服務(wù)支持在表達式或程序中直接引用自定義的捕獲組組名。

非捕獲組

非捕獲組不會將匹配到的文本內(nèi)容緩存到內(nèi)存中,形式上非捕獲組的半角圓括號()中以?:開頭。

例如您要查找programproject,則正則表達式可以為pro(gram|ject)。如果您不希望將正則表達式匹配的內(nèi)容緩存到內(nèi)存中,則可以使用pro(?:gram|ject)進行非捕獲匹配。

說明

(?:x)表示匹配x但是不緩存匹配項,可以定義與正則表達式運算符一起使用的子表達式。