正則表達式 Regular Expression

正則表達式(Regular Expression,簡稱 regex 或 regexp)是一種強大且靈活的文字處理工具,用於匹配和操作文字。它們通常用於搜索、替換和驗證文字。以下是正則表達式的基本概念和一些常見的用法說明:

基本概念

  1. 字面字符(Literal Characters):匹配文本中的字符本身。

    • 例如,正則表達式 abc 會匹配字串 "abc"。
  2. 元字符(Metacharacters):具有特殊含義的字符。

    • 常見的元字符包括 .^$*+?{}[]|()
  3. 字符類(Character Classes):用方括號 [] 包圍的一組字符,表示其中的任意一個字符。

    • 例如,[abc] 匹配 "a"、"b" 或 "c"。
  4. 預定義字符類(Predefined Character Classes)

    • \d:匹配任何數字,等同於 [0-9]
    • \D:匹配任何非數字字符。
    • \w:匹配任何字母、數字或底線,等同於 [a-zA-Z0-9_]
    • \W:匹配任何非單詞字符。
    • \s:匹配任何空白字符(空格、製表符、換行符等)。
    • \S:匹配任何非空白字符。
  5. 量詞(Quantifiers):指定前面的元素出現的次數。

    • *:匹配前面的元素零次或多次。
    • +:匹配前面的元素一次或多次。
    • ?:匹配前面的元素零次或一次。
    • {n}:匹配前面的元素恰好 n 次。
    • {n,}:匹配前面的元素至少 n 次。
    • {n,m}:匹配前面的元素至少 n 次且至多 m 次。
  6. 邊界匹配(Anchors):用於匹配字串的開始和結束。

    • ^:匹配字串的開始。
    • $:匹配字串的結束。
  7. 分組和捕獲(Grouping and Capturing):用圓括號 () 將字符組合在一起。

    • 例如,(abc)+ 匹配 "abc"、"abcabc"、"abcabcabc" 等。
  8. 替代(Alternation):使用管道符號 | 來表示 "或"。

    • 例如,abc|def 匹配 "abc" 或 "def"。

常見應用

匹配電子郵件地址

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

匹配IP地址

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

匹配日期(格式:YYYY-MM-DD)

^\d{4}-\d{2}-\d{2}$

匹配電話號碼(格式:123-456-7890 或 (123) 456-7890)

^(\(\d{3}\) |\d{3}-)\d{3}-\d{4}$

 

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記