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

分享

①WPS新增的REGEXP函數,非常好用!強烈推薦

 偷懶的技術 2024-04-28 發(fā)布于重慶

今天我們來介紹正則表達式函數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,"[^一-龜]+")

正則表達式解釋:

  1. []:這是一個字符集,用于匹配括號內列出的任意單個字符。

  2. ^:在字符集的開頭,它表示否定,即匹配不在字符集中的任何單個字符。

  3. 一-龜:這表示從漢字“一”到漢字“龜”的字符范圍。注意,這個范圍并不是按照字母順序來定義的,而是按照 Unicode 編碼的順序。這意味著它將匹配從“一”到“龜”這個范圍內所有的漢字。

  4. +:表示匹配前面的模式(在這里是字符集)一次或多次。

提取第一個漢字后的所有內容

公式:

=REGEXP(A2,"[一-龜]+.*")

正則表達式解釋:

  1. [一-龜]:這是一個字符集,表示匹配從漢字“一”到漢字“龜”之間的任意單個漢字。注意,這里的范圍并不是基于字典順序,而是基于這些漢字在 Unicode 編碼中的順序。

  2. +:表示匹配前面的字符集(在這里是 [一-龜])一次或多次。也就是說,這個正則表達式會匹配一個或多個連續(xù)的漢字,這些漢字的范圍是從“一”到“龜”。

  3. .*:這里的 .表示匹配除了換行符之外的任意單個字符,而 *表示匹配前面的字符(在這里是 .)零次或多次。因此,.*會匹配任意數量的任意字符(包括零個字符)。

提取第一個漢字前的內容

公式

=REGEXP(A2,"^[^一-龜]+")

正則表達多解釋:

  1. ^:這個符號表示匹配字符串的開始位置。也就是說,整個正則表達式模式必須匹配字符串的起始部分。

  2. []:這是一個字符集,用于匹配括號內列出的任意單個字符。

  3. ^:在字符集的開頭,它表示排除、否定,即匹配不在字符集中的任何單個字符。注意,這里的 ^是字符集內的第一個字符,因此它表示否定,而不是匹配字符串的開始位置。

  4. 一-龜:這表示從漢字“一”到漢字“龜”的字符范圍。注意,這個范圍并不是按照字母順序來定義的,而是按照 Unicode 編碼的順序。

  5. +:表示匹配前面的模式(在這里是字符集)一次或多次。

按指定字符拆分

公式:

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

按換行符拆分

=REGEXP(A2,".+")

正則表達式解釋

  1. .:這個符號在正則表達式中表示匹配除了換行符之外的任意單個字符。

  2. +:這個符號表示匹配前面的字符(在這里是 .)一次或多次。

還有其他更復雜的用法,我們下篇文章再介紹。



    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多