|
今天我們來介紹正則表達式函數REGEXP。 這個函數非常好用。有了它,很多文本函數都可以不用了。
在介紹它之前,我們一起來學習一下正則表達式的基礎知識。

正則表達式基礎知識 正則表達式就是用一些特殊的字符來表達或總結字符串的規(guī)律或特性。比如 用\d或[0-9]表示數字,那么\d{11}就表示11位的整數。 操作符 | 含義 | 示例 | . | 小數點,表示任何單個字符 |
| [] | 中括號表示字符集,對單個字符給出取值范圍 | [abc]表示a或b或c,[a-z]表示a-z單個字符(任意一位小寫字母) [0-9]表示單個任意數字 | [^] | 非字符集。對單個字符給出排除范圍 | [^abc]表示非a或非b或非c的單個字符 | * | 星號表示前一個元素的0次或者無限次的擴展 | abc*表示ab、abc、abcc、abcccc等等(匹配 ab) | + | 前一個元素的1次或者無限次的擴展 | abc+表示 abc、abccc、abcc、abccccc等(不匹配 ab) | ? | 前一個元素的0次或者1次擴展 | abc?僅表示 ab、abc。 可以把“4th|4”簡化為“4(th)?”。我們看到“?”作用的元素是整個括號了 | | | 左右表達式中的任意一個。左右表達式可以是多字符。注意與[ ]的區(qū)別 | abc|def表示abc、def | {m} | 擴展前一個字符m次 | ab{2}c表示abbc | {m,n} | 擴展前一個字符m至n次(含m和n次) | ab{1,2}c匹配abc、abbc | ^ | 匹配字符串開頭 | ^abc表示abc在一個字符串的開頭,即不匹配 aabc | $ | 匹配字符串結尾 | abc$表示abc在一個字符串的結尾,即不匹配abcd | () | 分組標記內部只能使用|操作符 | (abc)表示abc ,(abc|def)表示abc、def | \d | 一位數字,等價于[0-9] |
| \w | 組成單詞的字符,等價于[A-Za-z0-9_] | 表示字符小寫大寫的a-z和數字0-9以及下劃線_ |
下面我們來看一下REGEXP函數的基本語法及應用案例 
REGEXP語法
=REGEXP ( 字符串,正則表達式,匹配模式,替換內容 ) 第三參數的匹配模式有三種:0提取、1判斷、2替換 
提取字符串中的數字 
正則表達式解釋:
[0-9]:匹配任意一個數字字符,從0到9。
.:匹配小數點字符。在正則表達式中,點是一個特殊字符,表示匹配除了換行符之外的任意單個字符。但在這里,由于它被放在了方括號內,它失去了特殊含義,只表示匹配字面量的點字符。
-:匹配短橫線字符。同樣,在方括號內,短橫線只是一個普通字符,不表示范圍。
[0-9.-]:方括號表示一個字符集,該集合包含數字0到9、點字符和短橫線字符。匹配時,它會嘗試匹配這個集合中的任意一個字符。
+:表示匹配前面的字符集一次或多次。因此,[0-9.-]+會匹配一個或多個連續(xù)的數字、點或短橫線字符。
如果字符串中有多個數字,在最外圍套一個SUM函數,就能求和 =SUM(--REGEXP(A5,"[0-9.-]+")) 
拆分中英混合的字符串 
提取中文的公式:
=REGEXP(A1,"[一-龜]+") [一-龜]代表漢字,詳細解釋請閱讀下面的文章 提取非中文的公式: =REGEXP(A1,"[^一-龜]+") 正則表達式解釋:
[]:這是一個字符集,用于匹配括號內列出的任意單個字符。
^:在字符集的開頭,它表示否定,即匹配不在字符集中的任何單個字符。
一-龜:這表示從漢字“一”到漢字“龜”的字符范圍。注意,這個范圍并不是按照字母順序來定義的,而是按照 Unicode 編碼的順序。這意味著它將匹配從“一”到“龜”這個范圍內所有的漢字。
+:表示匹配前面的模式(在這里是字符集)一次或多次。

提取第一個漢字后的所有內容 公式: =REGEXP(A2,"[一-龜]+.*") 
正則表達式解釋:
[一-龜]:這是一個字符集,表示匹配從漢字“一”到漢字“龜”之間的任意單個漢字。注意,這里的范圍并不是基于字典順序,而是基于這些漢字在 Unicode 編碼中的順序。
+:表示匹配前面的字符集(在這里是 [一-龜])一次或多次。也就是說,這個正則表達式會匹配一個或多個連續(xù)的漢字,這些漢字的范圍是從“一”到“龜”。
.*:這里的 .表示匹配除了換行符之外的任意單個字符,而 *表示匹配前面的字符(在這里是 .)零次或多次。因此,.*會匹配任意數量的任意字符(包括零個字符)。

提取第一個漢字前的內容 
公式 =REGEXP(A2,"^[^一-龜]+") 正則表達多解釋:
^:這個符號表示匹配字符串的開始位置。也就是說,整個正則表達式模式必須匹配字符串的起始部分。
[]:這是一個字符集,用于匹配括號內列出的任意單個字符。
^:在字符集的開頭,它表示排除、否定,即匹配不在字符集中的任何單個字符。注意,這里的 ^是字符集內的第一個字符,因此它表示否定,而不是匹配字符串的開始位置。
一-龜:這表示從漢字“一”到漢字“龜”的字符范圍。注意,這個范圍并不是按照字母順序來定義的,而是按照 Unicode 編碼的順序。
+:表示匹配前面的模式(在這里是字符集)一次或多次。

按指定字符拆分

公式: =REGEXP(A2,"([^,]+)") 按換行符拆分 
=REGEXP(A2,".+") 正則表達式解釋
.:這個符號在正則表達式中表示匹配除了換行符之外的任意單個字符。
+:這個符號表示匹配前面的字符(在這里是 .)一次或多次。
還有其他更復雜的用法,我們下篇文章再介紹。



|