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-$31
((2
123$13
))4
5
456$26
--7
6789$31
( 字符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 格式的电话号码

