Excel REGEXREPLACE 函數教程

版本: Microsoft 365
最後更新:
提示:使用 ⬆️ ⬇️ 可上下翻頁。推薦用大屏瀏覽,以獲得更好的閱讀體驗。

1. REGEXREPLACE 函數簡介

REGEXREPLACE 函數是 Excel 中的一個強大工具,允許用戶使用正則表達式在文本中查找和替換子字符串。這對於批量清理數據或重新格式化字符串特別有用。
REGEXREPLACE 函數簡介

2. REGEXREPLACE 函數參數

這是使用 REGEXREPLACE 函數的語法。
=REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])
  • text: 必填 要替換字符串的文本或包含文本的單元格的引用。
  • pattern: 必填 描述要替換文本模式的正則表達式("regex")。
  • replacement: 必填 想要替換成的模式實例的文本。
  • occurrence: 選填 指定要替換的模式實例。默認情況下,occurrence 為 0,表示替換所有實例。負數替換從末尾開始的實例。
  • case_sensitivity: 選填 確定匹配是否區分大小寫。默認情況下,匹配是區分大小寫的,即默認為 0。可選值為:
  • 0: 區分大小寫
  • 1: 不區分大小寫
  • 3. 示例場景:電話號碼格式化

    例如,假設您有一組以不同格式呈現的電話號碼,您希望將其標準化為格式 (xxx) xxx-xxxx。使用 REGEXREPLACE 函數可以大幅簡化此過程。
    示例場景:電話號碼格式化示例場景:電話號碼格式化

    4. 開始使用 REGEXREPLACE 函數

    鍵盤輸入:=REGEXREPLACE(,然後選擇 A5 作為要處理的文本。
    開始使用 REGEXREPLACE 函數

    5. 移除非數字字符

    這裏我們把正則表達式設為: "\D",這個正則表達式會匹配任何非數字字符,然後把替換設為空字符串: ""
    移除非數字字符

    6. 應用 REGEXREPLACE 函數

    這樣,我們就可以將電話號碼中的所有非數字字符替換為空。

    這裏可能看到數據沒有變化,因為原來的格式已經是純數字了。讓我們把同樣處理應用到其他行。
    應用 REGEXREPLACE 函數

    7. 成功過濾掉非數字字符

    現在,我們已經成功過濾掉了電話號碼中的非數字字符。
    成功過濾掉非數字字符

    8. 格式化電話號碼

    我們也可以把電話號碼轉變為固定的 (xxx) xxx-xxxx 格式。

    這裏使用正則為:"(\d{3})[.-]?\s?(\d{3})[.-]?\s?(\d{4})",替換正則為:"($1) $2-$3"
    格式化電話號碼

    9. 正則表達式匹配解析

    這裏我們使用三個正則表達式捕獲組,把電話號碼分為三部分。每個部分都匹配電話號碼中的純數字。
    文本:
    正则表达式:
    123-456-7890(\d{3})[.-]?\s?(\d{3})[.-]?\s?(\d{4})
    1123(\d{3})
    2-[.-]?\s?
    3456(\d{3})
    4-[.-]?\s?
    57890(\d{4})
    1(\d{3})
    (
    捕獲組開始
    \d 數字
    匹配任意的數字 (0-9)
    {3} 數量
    匹配前一個字符(或子表達式)的 3 次
    )
    捕獲組結束
    2[.-]?\s?
    [.-] 字符集
    字符 .,   字符 -.
    ? 數量
    匹配前一個字符(或子表達式)的 0 次或 1 次。
    \s 字符集
    任意空白字符 (空格, tab, 換行)
    ? 數量
    匹配前一個字符(或子表達式)的 0 次或 1 次。
    3(\d{3})
    (
    捕獲組開始
    \d 數字
    匹配任意的數字 (0-9)
    {3} 數量
    匹配前一個字符(或子表達式)的 3 次
    )
    捕獲組結束
    4[.-]?\s?
    [.-] 字符集
    字符 .,   字符 -.
    ? 數量
    匹配前一個字符(或子表達式)的 0 次或 1 次。
    \s 字符集
    任意空白字符 (空格, tab, 換行)
    ? 數量
    匹配前一個字符(或子表達式)的 0 次或 1 次。
    5(\d{4})
    (
    捕獲組開始
    \d 數字
    匹配任意的數字 (0-9)
    {4} 數量
    匹配前一個字符(或子表達式)的 4 次
    )
    捕獲組結束

    10. 正則表達式替換解析

    然後把正則匹配出來的三部分,拼接成我們想要的格式。
    文本:
    正则表达式:
    (123) 456-6789($1) $2-$3
    1((
    2123$1
    3))
    4
    5456$2
    6--
    76789$3
    1( 字符
    2$1 第一個捕獲組的內容
    3) 字符
    4 字符
    空白字符
    5$2 第二個捕獲組的內容
    6- 字符
    7$3 第三個捕獲組的內容

    11. 成功格式化電話號碼

    這樣我們成功地把電話號碼格式化成我們想要的格式。應用到其他行即可完成整個數據清理過程。
    成功格式化電話號碼

    12. 正則匹配失敗的情況

    你可能會困惑,我們的正則表達式 "(\d{3})[.-]?\s?(\d{3})[.-]?\s?(\d{4})",並沒有去匹配原本是 (xxx) xxx-xxxx 格式的電話號碼。

    其實是因為 REGEXREPLACE 函數的正則如果匹配失敗,會返回原本的文本內容,不做任何修改。所以這裏不需要去匹配原本是 (xxx) xxx-xxxx 格式的電話號碼
    正則匹配失敗的情況正則匹配失敗的情況

    13. 🎉 完成! 🎉

    作者備註:希望你能感受到我這些教程的用心,我希望能創建一系列非常易懂的Excel教程。

    如果它有用,幫助我分享這些教程,感謝!


    關註我:
    REGEXREPLACE 函數簡介