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
格式的电话号码

