REGEX
說明
REGEX
是一個列函數,針對 執行整個字串比對 TEXT
與規則運算式搭配使用,並傳回與規則運算式的第一個擷取群組相符的字串部分。語法
REGEX
(string_expression
,"regex_matching_pattern
")傳回值
傳回相符的項目
TEXT
規則運算式的第一個擷取群組的值。如果沒有相符項目,則傳回 NULL
。輸入參數
- string_expression
- 必填。欄位名稱或運算式類型TEXT(或常值字串)。
- regex_matching_pattern
- 必填。規則運算式模式以 Java 程式語言的規則運算式模式比對語法為基礎。若要傳回非 NULL 值,規則運算式模式必須全數相符。TEXT值。
規則運算式建構
請參閱「規則運算式參考」,以取得有關定義規則運算式比對模式所用結構的資訊。
擷取與非擷取群組
群組由規則運算式中的一對括號指定,位於子模式前後。模式可有多個群組,且群組可內嵌。群組
從左到右
編號,從第一個左括號開始。一律有隱含的群組 0,其中包含完整的配對項目。例如,模式︰(a(b*))+(c)
包含三個群組︰
group 1: (a(b*)) group 2: (b*) group 3: (c)
擷取群組
預設情況下,群組
會擷取
產生相符項目的文字,且只會擷取最近的相符項目。該 REGEX
函數會傳回符合規則運算式中第一個擷取群組的字串。例如,如果上述運算式的輸入字串為 abc
,整個 REGEX
函數會符合 abc
,但僅傳回群組 1 的結果,即 ab
。非擷取群組
在某些情況下,您可能想要使用括號來將子模式分組,但不擷取文字。非擷取群組的開頭為
(?:
(在括號後面加上一個問號和一個冒號)。例如, h(?:a|i|o)t
符合項目 hat
或 hit
或 hot
,但不會擷取 a
, i
,或 o
從子運算式中選取「」。範例
比對所有可能的電子郵件地址,其模式為
使用者名稱
@提供者
。網域
,但僅從 電子郵件
欄位傳回電子郵件地址的 提供者
部分︰REGEX([email], "^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")比對 Web 記錄的要求行,其中值的格式為︰
並僅傳回要求的 HTML 頁面名稱︰GET /some_page.html HTTP/1.1
REGEX([weblog_request_line], "GET\s/
([a-zA-Z0-9._%-]+\.[html])
\sHTTP/[0-9.]+")從 中擷取英寸部分
height
範例值為所在欄位 6'2"
, 5'11"
(請注意引號中的字面量會被轉義為雙引號)︰REGEX([height], "\d\'(\d)+""")
擷取「」的所有內容
device
欄位 iPod
, iPad
,或 iPhone
︰REGEX([device], "(iP[ao]d|iPhone)")