🧩
← 返回教學列表

初學者正則表達式入門:如何撰寫正則表達式

· 標籤: regex-beginners, regular-expression-guide, regex-tutorial, regex-patterns, learn-regex

初學者正則表達式入門

正則表達式(Regular Expressions — regex)是描述文字的模式。透過正則表達式,你可以搜尋字串、驗證輸入、提取資料,並使用單一簡潔的表達式執行複雜的尋找與取代。一旦你掌握了基礎知識,正則表達式將成為你程式設計工具箱中最強大的工具之一。

什麼是正則表達式?

正則表達式是一串定義搜尋模式的字元。模式 \d{3}-\d{2}-\d{4} 可以匹配美國社會安全號碼:三位數字、連字號、兩位數字、連字號、四位數字。

正則表達式引擎存在於幾乎所有程式語言中 — JavaScript、Python、Java、Ruby、Go — 全部都有內建支援。

字面字元

大多數字元會匹配其自身。模式 cat 會匹配出現的任意位置的文字字串 "cat"。

Pattern: cat
Matches: "cat" in "The cat sat on the mat."
Matches: "cat" in "catalog"

字面匹配簡單直接但功能有限。真正的威力來自於中繼字元(metacharacters)。

中繼字元(Metacharacters)

這些字元具有特殊含義,若要匹配其字面值,必須使用 \ 進行跳脫:

. ^ $ * + ? { } [ ] \ | ( )

字元類(Character Classes)

字元類可以匹配集合中的一個字元。

方括號表示法

| 模式 | 匹配 | |------|------| | [aeiou] | 任何母音 | | [0-9] | 任何數字 | | [a-zA-Z] | 任何字母 | | [^0-9] | 任何非數字字元 |

預定義類

| 簡寫 | 描述 | |------|------| | \d | 任何數字(等同於 [0-9]) | | \w | 字母、數字或底線 | | \s | 空格、tab、換行 | | \D | 任何非數字字元 | | \W | 任何非單詞字元 | | \S | 任何非空白字元 | | . | 除換行外的任何字元 |

量詞(Quantifiers)

量詞控制前一個元素必須出現多少次。

| 量詞 | 含義 | 範例 | 匹配 | |------|------|------|------| | * | 零次或多次 | a* | """a""aa" | | + | 一次或多次 | a+ | "a""aa""aaa" | | ? | 零次或一次 | colou?r | "color""colour" | | {3} | 恰好 N 次 | \d{3} | "123" | | {2,4} | 介於 N 和 M 次 | \d{2,4} | "12""123""1234" |

範例

\d+     → "42" in "Answer is 42"
https?://  → "http://" and "https://"

錨點(Anchors)

錨點匹配位置,而非字元。

| 錨點 | 含義 | |------|------| | ^ | 字串開頭 | | $ | 字串結尾 | | \b | 單詞邊界 | | \B | 非單詞邊界 |

^hello   → matches "hello" only at the start
end$     → matches "end" only at the end
\bword\b → matches "word" as a whole word, not inside "sword"

分組與交替(Groups and Alternation)

捕獲分組 ( ) 提取匹配的部分:

(\d{3})-(\d{4}) → "555-1234", captures "555" in group 1, "1234" in group 2

非捕獲分組 (?: ) 僅分組但不提取:

(?:https?|ftp):// → "http://", "https://", "ftp://"

交替 | 充當 OR:

cat|dog|bird → matches "cat", "dog", or "bird"

實用正則表達式範例

| 使用場景 | 模式 | |----------|------| | 美國電話 | \d{3}-\d{3}-\d{4} | | 電子郵件(簡單) | \S+@\S+\.\S+ | | IP 位址 | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} | | 主題標籤 | #[a-zA-Z]\w* | | 時間(HH:MM) | [01]\d|2[0-3]:[0-5]\d |

如何測試正則表達式模式

始終以互動方式測試模式:

  1. 輸入你的正則表達式模式。
  2. 輸入測試字串。
  3. 即時查看哪些部分匹配。
  4. 調整並重複。

使用正則表達式測試器工具來實驗模式。它會高亮顯示匹配項、顯示捕獲分組,並幫助你準確了解表達式中每個部分的作用。

初學者正則表達式入門:如何撰寫正則表達式 - CoolTool