前言:寫了StringReplacer轉換器後,說要介紹StringSearcher轉換器的,如今鴿了好久。終於今天我來寫下這篇介紹——StringSearcher。
StringSearcher
簡介:將輸入的字符串進行正則匹配。如果輸入的字符串內容匹配正則表達式,該字符串會從Matched端口輸出,並且匹配的字符內容會存儲在指定的“Matched Result Attribute”屬性列中(可選將多個匹配結果以列表形式存儲在指定的“Matched Parts Attribute”屬性列中)。其他未匹配的,從NotMatched端口輸出。
一、參數介紹
1.1 基礎設置
- Search In
輸入用於正則匹配的字符串,通常選擇輸入的某個屬性字段 - Contains Regular Expression
指定匹配正則表達式,用於檢索輸入的字符內容。 - Case Sensitive
設置是否區分大小寫,適用於英文,中文無效。 - Matched Result Attribute
用於存儲匹配結果的字段名稱,默認名稱爲_first_match。若設置的名稱與現有字段名稱重複,會將其覆蓋。
1.2 高級設置
- 全部匹配結果列表名稱
該可選項設置後可以將所有的匹配結果存儲在指定的列表中。不設置的情況下只會在存儲匹配的第一個結果。 - 子匹配結果列表名稱
該可選項設置後可以將所有的子表達式匹配結果存儲在指定的列表中。不設置的情況下不存儲子表達式的匹配結果。子表達式的匹配結果即爲用括號“( )”包含起來的子表達式匹配的內容。
存儲在列表中的屬性內容通過2種方式獲取:
- 通常屬性獲取器中選擇列表屬性後,設置下標序號獲取對應的屬性值。
- 使用ListExploder轉換器將列表中所有的屬性值暴露處來。
二、正則表達式介紹
2.1 基礎用法
正則表達式是針對字符串處理的一種邏輯公式,既用事先定義好的特定字符及組合,形成一個“特定字符串判斷邏輯”。這個“特定字符串判斷邏輯”可以用來對字符串進行邏輯過濾。
字符 | 正則表達式字符介紹 | 例子 |
---|---|---|
| | 分支判斷符:表達邏輯判斷上的“或”,計算邏輯上的“or”關係。 | A|B |
* | 字符限定符:表達有任意個指定字符,包含0個 | A * ; * 等同於{0,} |
+ | 字符限定符:表達有一個以上指定字符,包含1個 | A+ ; +等同於{1,} |
? | 字符限定符:表達有0個或者1個指定字符 | A? ; ?等同於{0,1} |
{ } | 字符限定符:表達指定字符的允許出現次數 | A{1,3} 表示A可以出現1,2,3次; A{3,} 標識A可以出現3次以上,包含3次 |
. | 字符模式符:代表任意的單個字符 | .* 表示任意字符串 |
\d | 字符模式符:代表任意的單個數字 | \d+ 則表示任意一串數字; \d{6} 則表示一串6位數 |
^ | 位置指定符:代表開頭的位置 | ^廣州市 表示出現在開頭的“廣州市”字符 |
$ | 位置指定符:代表結尾的位置 | 北京路$ 表示出現在末尾的“北京路”字符; ^中國$ 則表示完全匹配,只有“中國”字符 |
[ ] | 集合限定符:用於包含字符集合 | [a-zA-Z] 表示任意英文字符;[一-龥] 表示任意漢字字符 |
( ) | 集合限定符:用於包含一個子表達式 | ^(\d{3})\d{8}$ 匹配11位數字並將前3位數字放入子匹配結果 |
2.2 前瞻後顧用法
語法 | 效果 | 例子 |
---|---|---|
str1(?=str2) | 查找str2前面的str1 | 白(?=蘿蔔) :提取“白蘿蔔”的“白” |
(?<=str2)str1 | 查找str2後面的str1 | (?<=白)蘿蔔 :提取“白蘿蔔”的“蘿蔔” |
str1(?!str2) | 查找後面不是str2的str1 | 黑(?!蘿蔔) :提取非“黑蘿蔔”的“黑” |
(?<!str2)str1 | 查找前面不是str2的str1 | (?<!黑)蘿蔔 :提取非“黑蘿蔔”的“蘿蔔” |
三、總結
StringSearcher轉換器的使用效果主要看對正則表達式的理解程度和熟練程度,所以如果想提高StringSearcher轉換器的使用效率則需要好好學習正則表達式的相關知識。