利用 3 個(gè)新增的 Excel 正則函數(shù)進(jìn)行文本插入、文本拆分

秋葉Excel 2024/9/14 11:45:04 責(zé)編:夢(mèng)澤

原文標(biāo)題:《這 3 個(gè)新增的 Excel 正則函數(shù),太牛 X 了!》

大家好,我是會(huì) Excel 數(shù)據(jù)處理的小爽~

之前我們講過(guò) WPS 新增的、一個(gè)非常強(qiáng)大的文本處理函數(shù) —— Regex 函數(shù)。(文章請(qǐng)戳)

它既可以做文本判斷,也可以做文本提取,甚至可以做文本替換。

Regex 函數(shù)其實(shí)就是下面三個(gè)正則函數(shù)的集合版本。

分別是 :

文本判斷:Regextest

文本提?。篟egexextract

文本替換:Regexreplace

如今,Office 365 中的 Excel,也更新這三個(gè)正則函數(shù)了,WPS 和 Excel 的正則函數(shù)語(yǔ)法差不多,大家可以對(duì)照著學(xué)習(xí)。

鑒于有小伙伴想看看進(jìn)階一點(diǎn)的正則函數(shù)。

今天,小爽就繼續(xù)來(lái)聊聊正則函數(shù)。

我們?cè)谌粘9ぷ髦?,除了需要?duì)文本進(jìn)行判斷,提取,替換外,還可能需要對(duì)文本進(jìn)行插入,拆分等操作。

大家跟我一起往下看,進(jìn)一步認(rèn)識(shí)其他的正則表達(dá)式。

正則表達(dá)式是一種用于匹配和操作文本的強(qiáng)大工具,它是由一系列字符和特殊字符組成的模式,用于描述要匹配的文本模式。

正則表達(dá)式可以在文本中查找、替換、提取和驗(yàn)證特定的模式。

PS.本文使用 Excel 里面的正則函數(shù)進(jìn)行演示。

1、文本插入

如下圖,我們需要在中文和英文 / 數(shù)字中,插入一個(gè)分隔符「-」,以便更好地查看信息。

傳統(tǒng)的做法是:利用字節(jié)數(shù)確定文本的位置,然后進(jìn)行替換。

=REPLACE(A2,LENB(A2)-LEN(A2)+1,0"-")

這種做法也可以,但是如果單元格開(kāi)頭不是文本,公式就會(huì)出錯(cuò)??!

所以,最好的方法就是利用強(qiáng)大的正則函數(shù)!

如下圖:

=REGEXREPLACE(A2"(*[一-龜])(\w+)""$1-$2")

我們來(lái)看看這個(gè)公式:

=REGEXREPLACE(A2"(*[一-龜])(\w+)""$1-$2")

Regexreplace 語(yǔ)法:

=REGEXREPLACE (字符串,正則表達(dá)式,替換表達(dá)式,[指定替換實(shí)例],[是否區(qū)分大小寫(xiě)])

字符串:A2 單元格

正則表達(dá)式:"(.*[一-龜])(\w+)"

替換表達(dá)式:"$1-$2"

假設(shè)字符串為 "excel 小爽 xiaoshuang"。

(.*[一-龜]):第一分組

.*  除換行符之外的任意字符,* 代表 0 到多個(gè)

[一-龜]:后面緊接著一個(gè)中文字符

第一組匹配到的字符為 excel 小爽。

(\w+):第二分組:

\w:在正則表達(dá)式中,它表示字母數(shù)字字符,包括所有字母(a-z、A-Z)和數(shù)字(0-9)的字符。它等同于 "[A-Za-z0-9_]"

\w+ 也就是代表一個(gè)到多個(gè)

第二組匹配到的字符為 xiaoshuang。

替換表達(dá)式:"$1-$2"

$1 代表第一分組的內(nèi)容,也就是 "excel 小爽"

$2 代表第二分組的內(nèi)容,也就是 "xiaoshuang"

"$1-$2",也就是 "Excel 小爽-xiaoshuang"。

拆分函數(shù) Textsplit 目前還不能進(jìn)行正則語(yǔ)法拆分,不過(guò)我們可以借助正則函數(shù) Regexextract!

2、文本拆分

如下圖所示:我想提取出日期之間的姓名。

用 Textsplit 函數(shù)來(lái)做,需要先把數(shù)字和分隔符進(jìn)行數(shù)組拼接后,再進(jìn)行拆分。

=TEXTSPLIT(A2,VSTACK(SEQUENCE(10,1,0)"-")1)

如果用正則函數(shù)來(lái)做,不需要像拆分函數(shù)那樣進(jìn)行拼接,只要把需要拆分的字符,放在中括號(hào)中取反即可。

=REGEXEXTRACT(A2"[^0-9-]+"1)

Regexextract 語(yǔ)法:

=REGEXEXTRACT (字符串,正則表達(dá)式,[匹配方式])

匹配方式中:

0 - 第一個(gè)匹配項(xiàng) (默認(rèn)值)

1 - 所有匹配項(xiàng)

2 - 捕獲第一個(gè)匹配項(xiàng)的組

第三參數(shù)為 1,因?yàn)槲覀兪且ヅ渌械钠ヅ漤?xiàng)。

=REGEXEXTRACT(A2,"[^0-9-]+",1)

重點(diǎn)看第二參數(shù):正則表達(dá)式

"[^0-9-]+"

[] 中括號(hào):用于指定一個(gè)字符集合或區(qū)間,可以讓正則表達(dá)式匹配特定的字符或范圍。

^ 號(hào):在字符集合開(kāi)頭表示取反,即匹配除字符集合以外的其他字符。

- 號(hào):在字符集合中間表示范圍,但是如果它在開(kāi)頭或結(jié)尾,則只表示普通字符-

該表達(dá)式的意思是:取除了 0 到 9 和-之外的字符,取一個(gè)或者多個(gè),盡可能多的匹配。

只匹配數(shù)字和-之外的字符,是不是相當(dāng)于按照數(shù)字和-,進(jìn)行拆分了呢~

3、最后的話(huà)

今天我們?cè)僖淮螌W(xué)到新的正則表達(dá)式:

在 Regexreplace 函數(shù)中:

正則表達(dá)式,() 代表分組,有幾個(gè)括號(hào)就代表幾個(gè)分組

替換表達(dá)式,$n 代表第幾個(gè)分組

我們可以利用分組靈活的插入字符串

\w 代表,數(shù)字字母下劃線(xiàn) [0-9a-zA-Z_]

\W 就是,非數(shù)字字母下劃線(xiàn) [^0-9a-zA-Z_]

拆分中,我們可以通過(guò)中括號(hào)取反的方式進(jìn)而實(shí)現(xiàn)正則拆分:

[] 代表字符集,中括號(hào)中開(kāi)頭 ^ 代表取反 [^..]

那大家也不難想到:

\d 取反是 \D,也就是 [^\d] 和 \D 是一樣的。

好了,本文就到這里結(jié)束啦~

看到這里,小伙伴是不是覺(jué)得,正則也就是這么一回事呢~

后面文章我們會(huì)接著繼續(xù)聊聊更深的正則語(yǔ)法。

本文來(lái)自微信公眾號(hào):秋葉 Excel (ID:excel100),作者:小爽

廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:Excel教程,Excel學(xué)院

軟媒旗下網(wǎng)站: IT之家 最會(huì)買(mǎi) - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會(huì)買(mǎi) 要知