Regex 正規表示法 - 基本語法

一個正規表示法通常被稱為是一個模式 (pattern),用來描述或匹配符合某個樣式規則的字串。

匹配字串最簡單的方式就是把所有的可能性都條列出來,例如你要找出 Handel、Händel 和 Haendel 這三個字串,你的匹配條件 (pattern) 可以這樣寫 Handel|Händel|Haendel;但透過 Regex 的語法,你可以用更簡潔有效率的方法描述你的 pattern,像是用 H(a|ä|ae)ndel 這個模式來描述,是不是簡單又強大多了!

要匹配同一個字串的 pattern 不止一種,很多種表示法都可以用來匹配到同一個字串。

pattern 一般由字符常量 (literal character constants) 和符號運算子 (operator symbols) 組成。

一個 pattern 中,常見的有下面這些組成元素:

  • 字元:就是單純照字面上的意義。例如 dog 可以用來匹配 dog 這字串;hello 101 則用來匹配 hello 101 這字串。
  • 或 (or):| 管線符號,用來將所有可能的選擇條件分隔開。例如 gray|grey 可以用來匹配 gray 或是 grey 字串。
  • 群組 (grouping):() 小括號,用來表示作用範圍或優先順序。例如 gray|grey 和 gr(a|e)y 都同樣可以用來匹配 gray 或是 grey 字串。
  • 量詞 (quantifier):quantifier 用來接在字符串或群組後面,表示某個條件應該出現「幾次」。常見的量詞有:
    • ?:表示連續出現 0 次或 1 次。例如 colou?r 可以用來匹配 color 或 colour。
    • *:表示連續出現 0 次或多次。例如 ab*c 可以用來匹配 ac, abc, abbc, abbbc 或 abbbbbbc。
    • +:表示連續出現 1 次或多次。例如 ab+c 可以用來匹配 abc, abbc, abbbc, abbbbbbc,但 ac 不符合。
    • {min,max}:表示至少連續出現 min 次,但最多連續出現 max 次。