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

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
作為要處理的文本。
5. 移除非數字字符
這裏我們把正則表達式設為:
"\D"
,這個正則表達式會匹配任何非數字字符,然後把替換設為空字符串: ""

6. 應用 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})
1
123
(\d{3})
2
-
[.-]?\s?
3
456
(\d{3})
4
-
[.-]?\s?
5
7890
(\d{4})
1
(\d{3})
(
\d
數字{3}
數量)
2
[.-]?\s?
[.-]
字符集.
, 字符 -
.?
數量\s
字符集?
數量3
(\d{3})
(
\d
數字{3}
數量)
4
[.-]?\s?
[.-]
字符集.
, 字符 -
.?
數量\s
字符集?
數量5
(\d{4})
(
\d
數字{4}
數量)
10. 正則表達式替換解析
然後把正則匹配出來的三部分,拼接成我們想要的格式。
文本:
正则表达式:
(123) 456-6789
($1) $2-$3
1
(
(
2
123
$1
3
)
)
4
5
456
$2
6
-
-
7
6789
$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
格式的電話號碼

