|
很多朋友學(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á)式的前提。 |
|
|
來自: 偷懶的技術(shù) > 《待分類》