# Regex 的介紹與應用 正規表達式 (Regular Expression, Regex) 使用單個字串來描述、符合一系列符合某個句法規則的字串。 ## 基本語法 ### 選擇 豎線 `|` 代表選擇(即或集),具有最低優先級。例如 `gray|grey` 可以符合grey或gray。 ### 數量限定 - 加號 `+` 代表前面的字元必須***至少出現一次***。例如,`goo+gle` 可以符合 `google`、`gooogle`、`goooogle` 等 - 問號 `?` 代表前面的字元***最多只可以出現一次***。例如,`colou?r` 可以符合 `color` 或者 `colour` - 星號 `*` 代表前面的字元***可以不出現,也可以出現一次或者多次***。例如,`0*42` 可以符合 `42`、`042`、`0042`、`00042` 等。 ### 符合 圓括號 `()` 可以用來定義運算子的範圍和優先度。例如,`gr(a|e)y` 等價於 `gray|grey`,`(grand)?father` 符合 `father` 和 `grandfather`。 ## 表達式列表 | 表達式 | 描述 | | ----------- | ----------------------------------- | | `\` | 將下一個字元標記為特殊字元 | | `^` | 字串開始位置 | | `$` | 字串結束位置 | | `+`,`?`,`*` | 詳見*基本語法* | | `{n}` | 指前面的字元出現**確定**n次 | | `{n,}` | 指前面的字元出現**至少**n次 | | `{n,m}` | 指前面的字元出現**至少**n次、**至多**n次 | | `.` | 符合 `\n`、`\r` 之外的任意字元 | | `x\|y` | 若未使用 `()`,範圍為全表達式 | | `[abc]` | 字元集合,符合所包含的任意一個字元 | | `[^abc]` | 排除型字元集合,符合未列出的任意一個字元 | | `[a-z]` | 字元範圍,符合指定範圍內的任意字元 | | `[^a-z]` | 排除型字元範圍,符合指定範圍內之外的任意字元 | ## Java 中的 Regex --- ###### tags: `Algorithm`