正規表達法

RegexOne


本文由余欣薏編輯

本文摘自〈RegexOne〉,由余欣薏統整後撰文。


本文章主要介紹該課程每堂課所教授的大致內容,該課程共14堂課,每堂課均先透過文字說明後,再讓使用者搭配互動式的練習題以更熟悉正規表達法各字元的使用方式。

1. 單元一:簡單介紹正規表達法以及\d、\D的使用功能

正規表達法的抓取功能可以應用於許多文件,如編碼、試算表等,而在正規表達法中不管是字母、數字、標點符號等等視為一個字元,每個字元皆各有其抓取的功能。字元除了普通字母,也包含數字,使用\d能代表所有文件中的數字,而\D則代表所有非數字的字元。

2. 單元二:點「.」的使用功能

點能夠抓取到文件中的任何單一字元,而「.」僅能抓取文件中同為點的字元。

3. 單元三:中括弧「[]」的使用功能

使用中括弧能抓取括弧內的特定字元,如〔abc〕只會抓取到文本中同為單個a、b、c的字母,不會抓取到其他字元。

4. 單元四:「〔^〕」的使用功能

於中括弧中加入「^」能用來排除抓取某特定字元,如〔^abc〕將抓取除了a、b、c以外的所有字元。

5. 單元五:「〔-〕」、\w、\W的使用功能

於中括弧中加入「-」能抓取所設定範圍內的所有字元,如〔a-z〕即能抓取文本中a到z範圍內所有的字母;如設定多個範圍也能一同搭配,例如〔A-Za-z0-9〕,此用法常用於抓取英文文本的內容。 \w能抓取文件中所有字母或數字,/W則能抓取任何非字母及數字的字元。

6. 單元六:大括弧「{}」的使用功能

大括弧能用來抓取重複的字元,且能明確設定該字元的抓取重複次數,例如a{3}將抓取a重複3次;其也能與其他正規表達法中其他的字元搭配使用,如{2, 6}表示任一字元重複抓取2-6次。

7. 單元七:「*」、「+」的使用功能

」代表0個或多個字元,通常會與其他字元搭配使用,例如\d能抓取任意數量的數字字元。「+」代表1個或多個字元,使用\d+能確保抓取文件中的字元數至少有一個數字。

8. 單元八:問號「?」的使用功能

問號用來抓取可選性的字元,其能表示要抓取的該字元存在或不存在,例如ab?c可抓取abc或ac,b於該處被認為是可存在也可不存在的字元;如要抓取單純問號的字元則須表示為「\?」。

9. 單元九:\s、\S、\t、\n的使用功能

該字元是空白功能,\s能抓取文本的所有空格字元,而\S則能抓取任何非空白字元。\t為製表符,\n表換行。

10. 單元十:「^$」的使用功能

「^$」用來表示開頭和結尾,如^success將只抓取文件中以success為開頭的句子,而兩個字元一同搭配使用能抓取文件中的特定句子。

11. 單元十一:括弧「()」的使用功能

括弧能用來抓取一個特定字元組,如要列出雲端中所有的圖像檔,能以^(IMG\d+. png)$該正規表達式抓取完整的檔名。

12. 單元十二:「( ())」的使用功能

「( ())」用來處理較複雜的數據資料,主要是抓取文件中的更細微的字元組,如僅抓取雲端文件的編號數字,能以^(IMG(\d+)). png$為表達方式。

13. 單元十三:「(.*)」的使用功能

「(.)」能用來抓取所有的字元組,而沒有括弧的「.」則用來抓取所有單一個的字元。

14. 單元十四:「|」的使用功能

「|」有或是的概念,如一般都以buy more milk or buy more bread使用該表達方式能以buy more(milk|bread)抓取符合的字元串。