正規表示式 - Regular Expression
正規表示式 (Regular Expression)能為你檢查是否為全英文字串! 很專業!
正規表示式 (Regular Expression)能為你檢查是否為指定結構字串! 很貼心!
正規表示式 (Regular Expression)能為你找出複雜性組成字串! 很厲害!
What is it?
Regular Expression 又稱正規表達式、正規表示法、規則運算式、常規表示法。是一門電腦科學,是用來比對字串是不是有符合正確的格式。
語法簡單,功能強大,最重要的是!幾乎已知的語言都有支援他。包誇了各大編譯器皆有支援。
開始之前
讓我們擁有一個實用的線上工具 regex101。
您可以在 TEST STRING 的地方輸入 focus,在於 REGULAR EXPRESS 的地方輸入 focus 或其中一字元都行(注意大小寫)。是否被選起來了呢!

下面的教學皆可直接扔進線上工具內使用哦!
- 注意: 正規表示法使用時前後須由
/包起來(/a/),但該工具 REGULAR EXPRESS 中輸入時不用。
語法
字元
1 | a: a字元 |
| RegExp | 說明 | 範例 |
|---|---|---|
| /a/ | 含有字元 a | a , ab , ba , bbacc |
| /./ | 任意單一字元 | a , ab , ba , bbccc , 哈囉 |
| /a./ | 含有字元 a 且後面接任意單一字元 | a1 , ab , a囉 |
次數
1 | *: 比對前一個字串 0 次或是多次。 |
| RegExp | 說明 | 範例 |
|---|---|---|
| /ba*c/ | bc 字元中間,a 字元出現 0 次或是多次。 | bc , bac , baaac |
| /ba?c/ | bc 字元中間,a 字元出現 0 次或一次。 | bc , bac |
| /ba+c/ | bc 字元中間,a 字元出現 0 次或一次。 | bac , baaac |
| /ba{2}c/ | bc 字元中間,a 字元出現 2 次。 | baac |
| /ba{2,}c/ | bc 字元中間,a 字元出現 2 次以上。 | baac , baaac |
| /ba{2,5}c/ | bc 字元中間,a 字元出現 2 - 5 次。 | baac , baaaaac |
條件
1 | ^: 字串開頭。 |
| RegExp | 說明 | 範例 |
|---|---|---|
| /^ab/ | ab 開頭字串。 | ab , abc |
| /ab$/ | ab 結尾字串。 | ab , cab |
| /acc | bcc/ | acc 字串或 bcc 字串。 |
| /a\*/ | a*字串。 | a* , aa* , a*a |
多字元篩選
1 | [ ] : [] 內所包含字元。 |
| RegExp | 說明 | 範例 |
|---|---|---|
| /[abc]/ | abc 任一字串。 | abc , ade , bde , cde |
| /[^abc]/ | 非 abc 任一字串。 | def , ggg , ddd |
| /[0-9]/ | 數字 0 - 9 | 0123456789 , a0b , 9a8n |
在
[ ]後面接上{n},則會取得[]中指定數量組合(不分順序)。1
EX: [abc]{2} : `ab` , `cb` , 'ac'
特殊字元
1 | \d: 任何數字字元,等同 [0-9] |
實例
1 | 西元生日: 四個數字開頭 - 兩個數字 - 兩個數字結尾 |
同場加映
Regex matching line not containing the string
不包含指定的字元!
1 | RegExp: ^((?!YoYo).)*$ |
- Hello YoYo!
- Hello Hank!
保留差異字元取代
- 筆者覺得這個超重要,大家一定要會。
在正規表示式中被 () 所選起來的參數可以被保留至變數中。
保留變數會由 $1 $2 $3 所使用。
1 | # 一段句子中,若只替換問候語而保留人名。 |

什麼? 你問我這有什麼用?
筆者遇到的問題是,因為語言版本的關係。要將程式內的變數使用 {} 替換為 [];
1 | Ex: |
總不可能要我一個一個去替換吧!!
這邊考考各位,要怎麼一組替代語法將 $str{} 替換成 $str[] !
筆者的答案在下方哦 ※1。
結語
Regular Expression 是非常好用的工具,且應用範圍很廣。編譯器對專案全區域搜尋、各程式語言內部使用設置是資料庫應用都可以做出很好的工作效率。
這篇只是筆者對基本 Regular Expression 的介紹。
大家能在利用網路資源,進行更深入的學習。
※1:
1 | 搜尋 RegExp: \$str\{([^\}]*)\} |