今天我们来介绍正则表达式函数REGEXP。
这个函数非常好用。有了它,很多文本函数都可以不用了。
在介绍它之前,我们一起来学习一下正则表达式的基础知识。
图片
正则表达式基础知识
正则表达式就是用一些特殊的字符来表达或总结字符串的规律或特性。比如用\d或[0-9]表示数字,那么\d{11}就表示11位的整数。
操作符
含义
示例
.
小数点,表示任何单个字符
[]
中括号表示字符集,对单个字符给出取值范围
[abc]表示a或b或c,[a-z]表示a-z单个字符(任意一位小写字母)
[0-9]表示单个任意数字
[^]
非字符集。对单个字符给出排除范围
[^abc]表示非a或非b或非c的单个字符
*
星号表示前一个元素的0次或者无限次的扩展
abc*表示ab、abc、abcc、abcccc等等(匹配 ab)
+
前一个元素的1次或者无限次的扩展
abc+表示 abc、abccc、abcc、abccccc等(不匹配 ab)
?
前一个元素的0次或者1次扩展
abc?仅表示 ab、abc。
可以把“4th|4”简化为“4(th)?”。我们看到“?”作用的元素是整个括号了
|
左右表达式中的任意一个。左右表达式可以是多字符。注意与[ ]的区别
abc|def表示abc、def
{m}
扩展前一个字符m次
ab{2}c表示abbc
{m,n}
扩展前一个字符m至n次(含m和n次)
ab{1,2}c匹配abc、abbc
^
匹配字符串开头
^abc表示abc在一个字符串的开头,即不匹配 aabc
$
匹配字符串结尾
abc$表示abc在一个字符串的结尾,即不匹配abcd
()
分组标记内部只能使用|操作符
(abc)表示abc ,(abc|def)表示abc、def
\d
一位数字,等价于[0-9]
\w
组成单词的字符,等价于[A-Za-z0-9_]
表示字符小写大写的a-z和数字0-9以及下划线_
下面我们来看一下REGEXP函数的基本语法及应用案例
图片
REGEXP语法
=REGEXP ( 字符串,正则表达式,匹配模式,替换内容 )
第三参数的匹配模式有三种:0提取、1判断、2替换
图片
提取字符串中的数字
图片
正则表达式解释:
[0-9]:匹配任意一个数字字符,从0到9。
.:匹配小数点字符。在正则表达式中,点是一个特殊字符,表示匹配除了换行符之外的任意单个字符。但在这里,由于它被放在了方括号内,它失去了特殊含义,只表示匹配字面量的点字符。
-:匹配短横线字符。同样,在方括号内,短横线只是一个普通字符,不表示范围。
[0-9.-]:方括号表示一个字符集,该集合包含数字0到9、点字符和短横线字符。匹配时,它会尝试匹配这个集合中的任意一个字符。
+:表示匹配前面的字符集一次或多次。因此,[0-9.-]+会匹配一个或多个连续的数字、点或短横线字符。
如果字符串中有多个数字,在最外围套一个SUM函数,就能求和
=SUM(--REGEXP(A5,"[0-9.-]+"))
图片
拆分中英混合的字符串
图片
提取中文的公式:
=REGEXP(A1,"[一-龟]+")
[一-龟]代表汉字,详细解释请阅读下面的文章
为什么可以用一-龟来指代常用汉字?
提取非中文的公式:
=REGEXP(A1,"[^一-龟]+")
正则表达式解释:
[]:这是一个字符集,用于匹配括号内列出的任意单个字符。
^:在字符集的开头,它表示否定,即匹配不在字符集中的任何单个字符。
一-龟:这表示从汉字“一”到汉字“龟”的字符范围。注意,这个范围并不是按照字母顺序来定义的,而是按照 Unicode 编码的顺序。这意味着它将匹配从“一”到“龟”这个范围内所有的汉字。
+:表示匹配前面的模式(在这里是字符集)一次或多次。
图片
提取第一个汉字后的所有内容
公式:
=REGEXP(A2,"[一-龟]+.*")
图片
正则表达式解释:
[一-龟]:这是一个字符集,表示匹配从汉字“一”到汉字“龟”之间的任意单个汉字。注意,这里的范围并不是基于字典顺序,而是基于这些汉字在 Unicode 编码中的顺序。
+:表示匹配前面的字符集(在这里是 [一-龟])一次或多次。也就是说,这个正则表达式会匹配一个或多个连续的汉字,这些汉字的范围是从“一”到“龟”。
.*:这里的 .表示匹配除了换行符之外的任意单个字符,而 *表示匹配前面的字符(在这里是 .)零次或多次。因此,.*会匹配任意数量的任意字符(包括零个字符)。
图片
提取第一个汉字前的内容
图片
公式
=REGEXP(A2,"^[^一-龟]+")
正则表达多解释:
^:这个符号表示匹配字符串的开始位置。也就是说,整个正则表达式模式必须匹配字符串的起始部分。
[]:这是一个字符集,用于匹配括号内列出的任意单个字符。
^:在字符集的开头,它表示排除、否定,即匹配不在字符集中的任何单个字符。注意,这里的 ^是字符集内的第一个字符,因此它表示否定,而不是匹配字符串的开始位置。
一-龟:这表示从汉字“一”到汉字“龟”的字符范围。注意,这个范围并不是按照字母顺序来定义的,而是按照 Unicode 编码的顺序。
+:表示匹配前面的模式(在这里是字符集)一次或多次。
图片
按指定字符拆分
图片
公式:
=REGEXP(A2,"([^,]+)")
按换行符拆分
图片
=REGEXP(A2,".+")
正则表达式解释
.:这个符号在正则表达式中表示匹配除了换行符之外的任意单个字符。
+:这个符号表示匹配前面的字符(在这里是 .)一次或多次。
还有其他更复杂的用法,我们下篇文章再介绍。
图片
图片
图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。