日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Excel新函數(shù):正則表達(dá)式(REGEX)函數(shù) - Excel函數(shù)式編程

 ExcelEasy 2024-06-11 發(fā)布于北京

前一陣子太忙,公眾號(hào)停止更新了一段時(shí)間。最近剛有點(diǎn)時(shí)間,想起來看看微軟有什么更新,竟然發(fā)現(xiàn)微軟在Excel中推出了正則表達(dá)式函數(shù)。

其實(shí)很早就有人問我關(guān)于Excel中使用正則表達(dá)式的問題,還有人吐槽:Word中都支持正則表達(dá)式,為什么在Excel中不支持?

現(xiàn)在大家可以安心了,Excel也支持了!這里我就先簡單介紹一下這幾個(gè)正則表達(dá)式函數(shù)的使用,作為恢復(fù)更新的第一篇。

注:現(xiàn)在還是只有測(cè)試頻道的朋友可以使用這幾個(gè)正則表達(dá)式函數(shù)。什么是正則表達(dá)式

正則表達(dá)式,英文是Regular Expression,簡寫為Regex,是一種按照特殊規(guī)則定義的字符串,用來表示一種字符串模式。

正則表達(dá)式經(jīng)常用來進(jìn)行字符串查找,匹配或分析,比如檢查一個(gè)字符串是否符合某種特定的模式,從一個(gè)字符串中抽取符合特定模式的子串,或者將符合特定模式的子串替換成給定的字符串。

這三種工作分別對(duì)應(yīng)Excel中的三個(gè)函數(shù)。

一個(gè)典型的正則表達(dá)式是這樣的:

^a(?=.*\d)(?=.*[A-Z])(?=.*[a-z])[a-zA-Z\d]{7,}

不經(jīng)過一段時(shí)間的學(xué)習(xí)恐怕是不容易理解這個(gè)正則表達(dá)式的含義的。

好在,也有一些不那么復(fù)雜的可以很容易掌握的規(guī)則,比如:

“[0-9]”:任意一個(gè)數(shù)字

“[a-z]”:任意一個(gè)小寫字母

“.”:任意一個(gè)字符

“a”:一個(gè)小寫字母“a“

“a*”:任意多個(gè)(0個(gè)或多個(gè))小寫字母”a“

“a+”:一個(gè)或多個(gè)小寫字母”a“

等等等等.....

說實(shí)話,我本身對(duì)正則表達(dá)式函數(shù)的真正作用是有所懷疑的。我不是懷疑它的強(qiáng)大功能,而是懷疑有多少Excel用戶能真正掌握正則表達(dá)式。

不過對(duì)普通人來說,這個(gè)門檻也降低了很多,因?yàn)榭梢允褂肁I幫我們生成正則表達(dá)式,只要你描述規(guī)則,現(xiàn)在一般的AI都可以完成這個(gè)工作。比如,在通義千問中,就可以這么提問:

要查找以a開頭的包含至少8個(gè)數(shù)字和字母的字符串,同時(shí)包含數(shù)字,大寫字母和小寫字母,請(qǐng)寫出正則表達(dá)式

AI給出了這樣的回答:

REGEXTEST

REGEXTEST函數(shù)的作用是檢查一個(gè)字符串是否符合給定的模式,如果是,返回TRUE,否則返回FALSE。

語法如下:

REGEXTEST (文本、模式、[case_sensitivity])

其中,

第一個(gè)參數(shù)“文本”,表示需要檢查的字符串;

第二個(gè)參數(shù)“模式”,表示給定的模式;

第三個(gè)參數(shù)指示是否按照大小寫敏感的方式檢查。如果是0,表示大小寫敏感,如果是1,表示大小寫不敏感。缺省為0。

下面是一個(gè)例子:

B列使用TEGEXTEST檢查A列相應(yīng)的字符串是否符合給定模式。檢查結(jié)果A1符合,A2不符合。REGEXEXTRACT

這個(gè)函數(shù)的作用是一個(gè)字符串中提取符合給定模式的子串。

語法如下:

REGEXEXTRACT (文本、模式、[return_mode]、[case_sensitivity])

其中,

第一個(gè)參數(shù)“文本”,表示待提取子串的字符串;

第二個(gè)參數(shù)“模式”,表示給定的模式;

第三個(gè)參數(shù),表示返回類型。如果為0,返回匹配的第一個(gè)子串;如果為1,以數(shù)組形式返回匹配的所有子串;如果為2,返回第一個(gè)匹配項(xiàng)的捕獲組;

第四個(gè)參數(shù),指示是否按照大小寫敏感的方式匹配。如果是0,表示大小寫敏感,如果是1,表示大小寫不敏感。缺省為0。

下面是一個(gè)例子:

這里我們使用了正則表達(dá)式:

[A-Z][a-z]+

這里的模式是:開頭是一個(gè)大寫字母,然后跟著1個(gè)或多個(gè)小寫字母。

所以在字符串:

Regular Expression Functions

中,有三個(gè)符合這個(gè)模式的字符串:

Regular

Expression

Functions

因此,B1中的公式就返回第一個(gè):Regular。

B2中的公式需要返回一個(gè)數(shù)組,包含所有的三個(gè)匹配結(jié)果。

這里我們沒有演示捕獲組的用法,那是正則表達(dá)式中比較高級(jí)的概念。我們?cè)谝院笤僭敿?xì)介紹。

可以想象,這個(gè)函數(shù)對(duì)于那些字符串分拆的場(chǎng)景是非常有用的。

REGEXREPLACE

這個(gè)函數(shù)的作用是將字符串中符合給定模式的子串替換為其他的內(nèi)容。

語法如下:

REGEXREPLACE (文本、模式、replacement、[occurrence]、[case_sensitivity])

其中,

第一個(gè)參數(shù)“文本”,表示給定的字符串;

第二個(gè)參數(shù)“模式”,表示給定的模式;

第三個(gè)參數(shù)“replacement”,表示替換后的字符串;

第四個(gè)參數(shù),表示需要替換的子串序號(hào)。如果是0,表示所有符合該模式的子串都需要替換。如果是1,就替換第一個(gè)符合模式的子串,以此類推。如果是負(fù)數(shù),就從后往前數(shù)。

第五個(gè)參數(shù),指示是否按照大小寫敏感的方式匹配。如果是0,表示大小寫敏感,如果是1,表示大小寫不敏感。缺省為0。

下面是一個(gè)例子:

這里,我們希望將身份證號(hào)的后四位替換成****,因此使用正則表達(dá)式:

"[0-9]{4}$"

$表示字符串結(jié)尾,{4}表示4個(gè),全部的含義是結(jié)尾的四個(gè)數(shù)字構(gòu)成的子串。

這個(gè)公式的作用就是將結(jié)尾的四個(gè)數(shù)字替換成"****"。

盡管REGEXREPLACE函數(shù)中沒有提到捕獲組,不過使用捕獲組可以完成很多復(fù)雜的替換。我們以后再詳細(xì)介紹。

總結(jié)

從概念上,這三個(gè)函數(shù)非常容易理解。它們的功能也非常強(qiáng)大。不過相信大家也會(huì)發(fā)現(xiàn),要想發(fā)揮著三個(gè)函數(shù)的威力,理解和掌握正則表達(dá)式是必須的。后面我會(huì)結(jié)合正則表達(dá)式介紹詳細(xì)介紹這三個(gè)函數(shù)的使用。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多