前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Excel 正则 REGEXEXTRACT

Excel 正则 REGEXEXTRACT

作者头像
披头
发布2024-11-21 11:24:45
发布2024-11-21 11:24:45
22500
代码可运行
举报
文章被收录于专栏:datartisandatartisan
运行总次数:0
代码可运行

Excel 于今年推出了一系列正则函数,给文本处理带来的极大的便捷性,今天咱们就来看看最常用的 REGEXEXTRACT 是怎么使用的。

语法

代码语言:javascript
代码运行次数:0
复制
REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])

Excel REGEXEXTRACT 函数使用语法如上所示,各个参数的含义解释如下:

  • text

文本或对包含要从中提取字符串的文本的单元格的引用。

注意:参数没有中括号 [ ] 包裹,说明是必选参数。

  • pattern

文本样式,即正则表达式。该参数是正则匹配的核心参数。

注意:不同语言的正则表达式语法略有不同,不可生搬硬套。

  • [return_mode]

参数有中括号 [ ] 包裹,说明是可选参数。

该参数表示返回模式,指定要提取的字符串,默认取 0:

0:返回与正则匹配的第一个字符串

1:以数组形式返回与正则匹配的所有字符串

2:以数组形式返回第一个匹配项中的捕获组

注意:捕获组是正则表达式模式的一部分,用括号“ (...) ”括起来。它们允许单独返回单个匹配的单独部分。

  • [case_sensitivity]

同上,这个参数也是可选参数。

该参数表示是否区分大小写,默认情况下,匹配项区分大小写。输入以下选项之一:

0:区分大小写

1:不区分大小写

常用元字符

正则表达式匹配时,会使用到一些元字符,以下是正则表达式中常见的元字符及其匹配规则描述:

元字符

匹配规则描述

分类及补充描述

.

匹配任意单个字符(除了换行符)

^

匹配输入字符串的开始位置

匹配锚点

$

匹配输入字符串的结束位置

匹配锚点

*

匹配前面的子表达式零次或多次

重复限定符

+

匹配前面的子表达式一次或多次

重复限定符

?

匹配前面的子表达式零次或一次

重复限定符

{n}

匹配确定的n次

重复限定符

{n,}

至少匹配n次

重复限定符

{n,m}

最少匹配n次且最多m次

重复限定符

[]

匹配方括号内的任意字符(字符集)

枚举字符集

[^...]

匹配方括号内未列出的任意字符(字符集)

排除字符集

|

逻辑或操作符,匹配两项之间的任意一项

逻辑或(多选结构)

\

转义特殊字符或表示特殊序列

转义符

()

将多个表达式组合成一个子表达式,用于分组

分组并捕获

(?:...)

用于分组但不捕获匹配的文本

分组但不捕获

(?=...)

正向预查,在某个表达式前面查找匹配,但不包括在匹配结果中

正向先行断言

(?!...)

负向预查,查找不在某个表达式前面的匹配

负向先行断言

(?<=...)

正向回顾,在某个表达式后面查找匹配,但不包括在匹配结果中

正向后行断言

(?<!...)

负向回顾,查找不在某个表达式后面的匹配

负向后行断言

常用字符集

正则匹配时,还可以使用字符集形式来匹配多种字符,比如所有数字、字母、汉字等,如下是一些常用字符集:

字符集

匹配规则描述

[0-9]

匹配所有数字

[a-z]

匹配所有小写字母

[A-Z]

匹配所有大写字母

a-zA-Z0-9

匹配所有小写字母、大写字母及数字

一-龟

基本上可以匹配所有汉字(由于Unicode 是不断扩展的,此字符集存在无法匹配的情况)

常用转义序列

正则匹配时,还会用到一些转义序列,用来批量匹配文本及数字等特殊字符,下面是一些常用的转义序列:

转义序列

匹配规则描述

\d

匹配任意单个数字(等同于 [0-9])

\D

匹配任意单个非数字字符(等同于 [^0-9])

\w

匹配任意单个“单词字符”(等同于 [a-zA-Z0-9_])

\W

匹配任意单个非“单词字符”(等同于 [^a-zA-Z0-9_])

\s

匹配任意单个空白字符(包括空格、制表符、换行符等)

\S

匹配任意单个非空白字符

转义序列和元字符结合即可配合多种规律字符。比如 \d+ 可以匹配任意长度数字,\d{2} 可以匹配两位长度的数字。

使用案例

学习了这么多理论,咱们来找几个例子实践一下:

  1. 匹配数字

假设原始文本为:张三:语文 100分,数学 99分,英语 98分。那么匹配所有成绩的写法为:

代码语言:javascript
代码运行次数:0
复制
=REGEXEXTRACT(A1,"\d+",1)

匹配数字

当分数包含小数点时,以上写法不再适用:

匹配带小数点的数字1

可以这么写来获取正确结果:

代码语言:javascript
代码运行次数:0
复制
=REGEXEXTRACT(A1,"\d+(?:\.\d+)?",1)

匹配带小数点的数字2

  1. 匹配汉字

假设原始文本为:春秋航空 9C1234 2024-10-20 12:34:56 要提取上述文本中的航司信息,可以这么写:

代码语言:javascript
代码运行次数:0
复制
=REGEXEXTRACT(A1,"[一-龟]+")

匹配汉字

  1. 匹配邮箱

假设原始文本为:Please contact us at John_doe.2023+feedb%ack@moonshot-ai.co.uk for more information. 要提取上述文本中的邮箱信息,可以这么写:

代码语言:javascript
代码运行次数:0
复制
=REGEXEXTRACT(A1,"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b")

匹配邮箱

今天的分享就到这里了,希望对你有所启发,欢迎点赞、分享。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学探究 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法
  • 常用元字符
  • 常用字符集
  • 常用转义序列
  • 使用案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档