??歷史文章分類專題?? ??最近五篇原創(chuàng)文章??
Excel偷懶的技術(shù)讀者九群讀者朤咨詢下圖中的公式如何解讀。 此公式的原文鏈接: 要理解此公式得掌握兩個(gè)知識(shí)點(diǎn) 1、分組 2、定位(斷言) 分組 分組是就將幾個(gè)字符或子表達(dá)式打包成一個(gè)整體。 為什么要打包?做什么用? 方便后面引用。可以理解為給他取個(gè)名字,就象給班上的學(xué)生分成幾個(gè)組:第一組、第二組…… 分組后,這些小組就有了默認(rèn)的名字: \1,\2,\3…… 在后面的表達(dá)式中,或在REGEXP的第四參數(shù)中就可以叫它的名字\1\2來指稱它了。 這種方法專業(yè)名稱叫捕獲分組。 那是不是還有非捕獲分組? 是的,下面就是非捕獲分組 (?:XXX) 它沒有名字,不能用\1、\2等來反向引用。 斷言 斷言在以前的文章中解釋過,就是用前后的字符來定位。 這里就不重復(fù)了,大家點(diǎn)擊下面的鏈接去閱讀 鏈接: 掌握分組和斷言后,上面的公式就好理解了: =REGEXREPLACE(B22,"(..)(?=.)","$1/") (..) 小數(shù)點(diǎn)指除換行符以外的任意字符,用括號(hào)將兩個(gè).括起來,就是兩個(gè)字符一組,小組名叫\(zhòng)1。 (?=.) 后面是除換行符以上的任意字符。也就是說,后面要有字符、不能為空。 如果不加個(gè)(?=.)來限制,那么就是每兩個(gè)一組,然后在每組后面加上一斜杠,這會(huì)在最后也加上斜框,如下圖: 現(xiàn)在理解了吧? 那么,這個(gè)案例用正則表達(dá)式,你還能寫出幾個(gè)公式? 思考中…… . . . . 加上前面的=REGEXP(B3,"(..)(..)(..)",2,"\1/\2/\3")公式,一共十個(gè)。 如果這些公式,你都能看明白,那你對正則表達(dá)式的各種元字符就比較熟悉了。 下面簡單地解釋一下 =REGEXP(B2,"(..)(?=.)",2,"\1/") 前文已解釋,略 =REGEXP(B4,"(..)(?=\d)",2,"\1/") (?=\d)后面是數(shù)字 =REGEXP(B5,"(..)(?=\w)",2,"\1/") (?=\w),\w代表數(shù)字字母下劃線,后面是數(shù)字字母下劃線。 =REGEXP(B6,"(..)(?=\B)",2,"\1/") \b:單詞邊界。這個(gè)單詞我是我們通常所講的英語單詞,在正則表達(dá)式中連續(xù)的\w字符稱為單詞。\b就是連續(xù)\b字符的前后位置。 \B:不是\b的位置 =REGEXP(B7,"(..)(?=\S)",2,"\1/") \s任意空白字符,等價(jià)于[ \f\n\r\t\v], \S表示非空白字符。 這里為什么能用(?=\S),我也不太明白。 =REGEXP(B8,"(..)(?!$)",2,"\1/") $表示字符串結(jié)尾 (?!$)表示后面不是字符串結(jié)尾。 詳見: =REGEXP(B9,"(..)(?!\Z)",2,"\1/") \Z也是字符串結(jié)尾 =REGEXP(B10,"(..)(?!\z)",2,"\1/") \z還是字符串結(jié)尾,它表示絕對結(jié)尾。 $、\z、\Z有啥區(qū)別? 詳見: =REGEXP(B11,"(..)(?!\b)",2,"\1/") \b單詞邊界。 更多正則表達(dá)式的文章,詳見合集:正則表達(dá)式,已有20篇文章。 如需加入RPA群,請備注RPA 如需加入圖表群,請備注圖表 |
|