电竞比分网-中国电竞赛事及体育赛事平台

分享

掌握這一點,就能正確地寫出正則表達(dá)式了

 偷懶的技術(shù) 2024-09-13 發(fā)布于重慶



很多朋友學(xué)了正則表達(dá)式后,看別人寫的正則表達(dá)式,能看懂,但一旦自己動手寫,就不會了,感覺無從下手。其癥結(jié)在于:

不會去總結(jié)發(fā)現(xiàn)字符串的規(guī)律。

我們不管是用普通的函數(shù)公式來編寫公式,還是正則表達(dá)式來寫公式,在動手前,一定要先分析數(shù)據(jù)的特點和規(guī)律,再根據(jù)數(shù)據(jù)的特點,來針對性的使用哪些函數(shù)公式的哪些套路。

我們以Excelhome論壇的一個案例來介紹。

需求

原始數(shù)據(jù):

搜索指數(shù)

最新款女裝 夏裝 928

最新款女裝 2012 91

最新韓版女裝 183

中袖雪紡衫 4,088

中袖襯衫 1,963

中長款雪紡衫 3,229

中袖衫 139

中袖女裝夏裝 270

該位網(wǎng)友的需求是,提取字符串最后面的那串?dāng)?shù)字

為了準(zhǔn)確理解要提取的數(shù)據(jù),我將原數(shù)據(jù)和提取的結(jié)果放在一起列示出來

如何寫正則表達(dá)式

按龍逸凡的理解正則表達(dá)式就是:

確的描述目標(biāo)字符串規(guī)特點的表達(dá)式。

先來分析要提取的字符的特點(正則表達(dá)式的字符放在【】中):

1、是數(shù)字【\d】,有些在數(shù)字還有千位分隔符逗號“,”。

2、在字符串的最后【$】

3、前面是空格?!?】或【\s】

那么,用一句話來無歧義地述目標(biāo)字符串的規(guī)律[規(guī)則]特點呢?

有多種描述方法。

描述1:

連續(xù)多個數(shù)字(含逗號,不含其他字符)并且在字符串的最后。

公式:

=REGEXP(A2,"[\d,]+$")

描述2:

不包含空格并且在字符串最后的連續(xù)字符。

公式:

=REGEXP(A2,"[^ ]+$")

也可寫為:

=REGEXP(A2,"((?! ).)+$")

使用上面的方法,是不是感覺寫正則表達(dá)式并沒有想象中那么難?

另外,我們還可象下面的小水獺一樣,這個思路不行就換另一個思路:

利用正則函數(shù)的替換功能,將不需提取的數(shù)據(jù)刪除。剩下的不就是要提取的數(shù)據(jù)了嗎?

那如何用一句話來無歧義地述不需要提取的字符串的規(guī)律[規(guī)則]特點呢?

3、以空格結(jié)尾的多個字符

公式:

=REGEXP(A2,".* ",2,)

上面公式中,星號*后有一個空格。公式的意思是:將以空格結(jié)尾的多個字符替換為空(也就是刪除)。

這個公式還可變形為:

=REGEXP(A2,"^.* ",2,)

或者

=REGEXP(A2,"^.*(?: )",2,)


=REGEXP(A2,"(.*(?= ))+",2,)

4、將字符串分成兩組,以空格結(jié)尾的多個字符為第1組,后面緊跟的數(shù)字為第2組。將第1組、第2組替換為第2組,其他字符保留。

公式:

=REGEXP(A2,"(.* )(\d+)",2,"\2")

此公式與前面的公式差不多是一個意思。

最后,用一句話總結(jié)本文:

正確地分析總結(jié)概括字符串的規(guī)律,是寫出正則表達(dá)式的前提。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多