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 函数简介