- 83shares
- Facebook30
- LinkedIn27
- Twitter14
- Love This12
在分析數據或是資料的時候,你或許沒辦法直接從既有的篩選器,一次將你想要選擇的內容做全部資料的輸出,此時,學會使用正規表示式,或稱規則運算式(Regular Expression, RegEx) 就很重要了!
類似你在做 google 搜尋的時候,會使用一些符號協助你做更精準的搜尋,比如在 Google 搜尋技巧終極懶人包,搜索達人必學 4 招 這篇文章裡面,我們介紹了簡單的符號或是文字,作為你在縮小搜尋範圍時的好幫手。
規則運算式也是類似的道理,用電腦能夠理解的語言,透過文字與符號找到你要的資訊,有些和 google 搜尋的技巧是重複的。
比方說,你想要找的網頁內容包含 facebook、instagram 的相關內容,就可以透過「與規則運算式相符合」這個功能,facebook | instagram 設定你的條件,而不用再煩惱怎麼一次篩選出多個你想要的數據內容。又如最初你在設定網址的時候,可能大小寫的尚未統一一致,有”f”acebook也有”F”acebook,那麼也可以使用規則運算式來協助資料搜尋:*acebook、.acebook ?acebok
內容大綱
Toggle1. 點【.】
簡單來說,點可以代替所有可能的字元(字母、數字或符號)。
比如使用「.GC」,可以匹配的搜尋結果包括 UGC(User Generated Content)、OGC(Occupationally Generated Content)、PGC(Professionally Generated Content)或是 2GC、nGC等。
2. ? 【問號】
問號代表的意思是,比對前一個字串或是不比對。比如你在輸入 facebook 的時候可能不小心 book 少了一個 o,那你使用規則運算式 facebo?k,可能匹配的結果包括 facebook(包括 o)、facebok(不包括 o)。
3. *【星號】
星號表示比對前一個字串零次或是多次。比方你輸入的「sky*blue」時,星好前面的字元為 [y],因此搜尋結果會出現 skblue(y 出現零次)、skyblue(y出現一次)、skyyyyblue(y 出現很多次)。
4. + 【加號】
5.|【直線】
跟使用 google 搜尋引擎類似,規則運算式也有代表「或者」的符號,就是直線。比如你想要搜尋整個網站跟 Facebook、Instagram、Wordpress、Google有關的文章之流量,你就可以使用 Facebook|Instagram|Wordpress|Google 這樣的進階搜尋,為你想要的結果一次一網打盡。
又或者你有不同的產品,在網址的結尾分別使用 thanks 或是 thankyou,那麼你也可以用 /productname-thank (s|kyou),一次查看完成產品購買的使用者的資訊。
6. ^ 【插入符號】和 $【錢字符號】
^插入符號是比對前開頭,$ 錢字符號則是比對結尾。
比如你輸入的搜尋條件是 ^eat,那麼你會搜尋到的結果會有 eat、eaten;如果是 eat$,那麽搜尋到的結果可能是 creat、peat、leat。
如果你只想要搜尋 eat 這個字,那麼可以使用 ^eat$,這將只鎖定符合「eat」的這個搜尋結果
7. \ 【反斜線】
將任何特殊字元,恢復成一般字元。
可能在搜尋特定網址的時候裡面有一個點或者是查找IP的時候也有一個點,可是這個點同時又在規則運算式裡面有它自己的功能,為了要讓這個點不受到規則運算的影響(不要使用規則運算裡「點」的功能),此時就需要反斜線的幫助。
比如我想找 transbiz.com 但如果只輸入transbiz.com的時候可能會出現的搜尋結果包括 transbizkcom、transbizzcom、transbizccom⋯⋯所以為了更精準地找到你想要的結果,在規則運算式裡輸入「transbiz\.com」,就會出現 transbiz.com了。
基本的講完了以後,再來就是重要的分組符號(括號、方括號、破折號)!透過分組符號你可以更容易找到有規律的字串的所有結果。
8. ( ) 【括號】
括號簡單來說就是把你想要找的相關字詞放在括號裡面,它就會依照括號裡面的字元排序為你找到可能的結果。比如 (sym),你可能搜尋到的結果可能有sympathy、symbol、assym 等。
而在使用上它常常會和|(直線)一起搭配使用,比如 sy(m|n),你可能就會找到 syndrome。
9. [ ] 【中括號】
任意比對字串中裡面的每個項目。比如你設定 [DEFG],那麼就會為你找出含有DEFG的相關內容,比如產品類別有 A 到 Z,但你想看 DEFG 這幾個商品類別的表現,那麼就可以用 product[DEFG] 找到你要的商品:prdocutD、prdocutE、prdocutF、prdocutG。
10. - 【破折號】
常常會和中括號[]一起使用,比如 product [A-K], product [3-9] 就可以分別叫出編號 A 到 K、編號 3 到 9 的商品。
在了解了規則運算式的符號了以後,會不會想考驗一下自己關於這些運算式的使用呢?其實你常在使用的 Google 表單,它背後設計的邏輯也是根據規則運算式,讓 google 知道使用者究竟有沒有輸入正確的代碼。
除了上面提到的代碼之外,還有一些使用上小技巧的標示符號:
數量標示:標示某個符號或字集被允許出現的次數
- { } 數量符號
- {10} 代表10個
- {10, } 10個或以上
- {1, 5} 1到5個之間
縮寫:
- \w= [a-zA-Z]
- \d =[0-9]
- + = {1, }
- ? = {0, 1}
- * ={0,}
例如:
手機號碼:開頭到結尾都必須是數字,不得有連字符號
^[0-9]{10}$
郵遞區號:5碼數字
^[1-9]\d{4}$
身分證字號:一碼英文大寫搭配9碼數字
^[A-Z]\d{9}$
西元出身年月日:以1901/2/28表示
^\d{4}\/\d{1,2}\/\d{1,2}$
複雜版^[1-9]\d{3}\/[1]?\d\/[123]?\d$
為了確認你了解規則運算式,先看看下面的考題看看你是否能選出正確答案:
以下哪個選項表示IP 範圍從192.88.777.1到192.88.777.10
A) 192\.88\.777\.[1-9]10
B) 192.88.777.[1-10]
C) ^192\.88\.777\.([1-9]10)$
D) 192\.88\.777\.[1-10]
再來幾題,小試身手
(1)用一個字串表達以下網址
transbiz.com.tw/post55688/text
transbiz.com.tw/post58588/text
transbiz.com.tw/post25252/text
(2)用一個字串表達下列所有IP
192.141.9.3
192.141.7.3
192.141.4.3
(3)用一個字串表達下列所有網址
transbiz.com.tw/fb/post01
transbiz.com.tw/fb/post02
transbiz.com.tw/fb/post03
transbiz.com.tw/web/post01
transbiz.com.tw/web/post02
transbiz.com.tw/web/post03
解答:
(1)transbiz\.com\.tw/post[0-9]{5}/text
(2)192\.141\.[1-9]\.3
(3)transbiz\.com\.tw/(fb|web)/post0[1-3]
RegEx的應用
前面有稍微提到,RegEx 能夠協助你在做數據分析的時候,將所有相關的資料調出來。這邊再細部講解一下可能會使用到的情況:
(1)Google Analytics設定的目標(Goals)
比方說,不論是用者購買了你網站上的哪一個商品、完成了訂房,完成的頁面可能會根據使用者的訂單時間跟商品品項出現如下的網址
book/TypeA/201802061655/success=1
book/TypeB/201802081742/success=1
若你要區隔出 TypeA 房型的訂單,那麼你在規則運算式的表達就會是
(2)Google Tag Manager
你在做轉換追蹤的時候可能會因為不同的活動和使用者在網站上的「動作」設定不同的 Tag,但如果你想要同時看某種篩選條件下所有的資料結果,省去單項比對的時間時,那麼你也會需要使用到 RegEx 來設定你的 GTM。
比方說,你的網頁有不同的語言,而你想要鎖定以英語系為主要國家的使用者,他們造訪你的網站,那麼你就可以輸入 (US|UK|AU|CA) 這樣的條件,為你一次將這些以英語為主要母語的國家之使用者的行為標記。
其實知道 RegEx 規則運算式跟能夠應用出來還差一小段路,你可以到 regexr.com 這個網站檢查你輸入的規則運算式是否有誤,到 Jay Taylor 整理的規則運算式表單熟悉每一個符號的使用。但如果你還不知道 Google Analytics 或是 Google Tag Manager,還是先把基本知識備足了再來學進階的吧!
延伸閱讀:
- 83shares
- Facebook30
- LinkedIn27
- Twitter14
- Love This12