乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      剛剛學(xué)到的正則新用法,秒殺史上所有的去重提取套路!

       EXCEL應(yīng)用之家 2025-06-13 發(fā)布于上海


      歡迎轉(zhuǎn)發(fā)和點(diǎn)一下“看”,文末留言互動(dòng)!

      置頂公眾號(hào)或設(shè)為星標(biāo)及時(shí)接收更新不迷路

      小伙伴們好,這里是EXCEL應(yīng)用之家。今天來和大家分享一道特殊的文本處理題目。

      這道題目在我的文件夾中吃灰了好長一段時(shí)間,低版本環(huán)境下我也沒有好的辦法來處理它。原題目是這樣的:

      題目要求將源數(shù)據(jù)中多余的計(jì)算符號(hào)去除。如果使用公式那么這道題目是非常不好處理的。 而通過VBA正則方法,這道題目則異常簡單。

      01

      VBA正則方法

      完整代碼如下:

      Sub 去除重復(fù)符號(hào)()    Dim i As Integer, arr As Variant, brr As Variant, regex As Object    Set regex = CreateObject("vbscript.regexp")    arr = Range("A2:A4")    ReDim brr(1 To UBound(arr), 1 To 1)    With regex        .Pattern = "([-+/*])+\1"        .Global = True    End With    For i = 1 To UBound(arr)        brr(i, 1) = regex.Replace(arr(i, 1), "$1")    Next    [B6].Resize(UBound(brr), 1) = brrEnd Sub

      主要講一下這段代碼的正則表達(dá)式。

      Pattern = "([-+/*])+\1"

      由于運(yùn)算符號(hào)有重復(fù),我們統(tǒng)計(jì)一下,所有的運(yùn)算符號(hào)可以歸納為“-+/*”這四個(gè)。它們構(gòu)成一個(gè)字符集合,“+”來對(duì)它們多次重復(fù)的匹配。

      “\1”表示回溯引用或者反向引用前面括號(hào)中的內(nèi)容。其含義是,如果前面匹配到“-”,“\1”就和前面匹配到內(nèi)容相同,也是“-”。

      For i = 1 To UBound(arr)    brr(i, 1) = regex.Replace(arr(i, 1), "$1")Next

      使用Replace方法,用“\1”引用的內(nèi)容(單個(gè)的運(yùn)算符)來替代匹配到的(多個(gè)重復(fù)的)運(yùn)算符。

      "$1"是指前面反向引用中的內(nèi)容。在VBA中符號(hào)“$”是默認(rèn)符號(hào)。

      最重要的東西講完啦,大功告成!

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多