excel中用正則匹配 EXCEL正規表示式之分組

2021-10-14 10:00:12 字數 2025 閱讀 5157

為了匹配各種型別的字元,正規表示式中引入了元字元,為了解決匹配字元的個數,引入了量詞,有時需要匹配單個字元,有時需要把字串作為乙個整體來匹配,所以我們還要學習一下分組。

如:abc 與 (abc)是完全不同的兩個匹配。

abc,表示匹配abc,最後那個c出現至少兩次,所以匹配出來的是abcc,abccc,abcccc,……

(abc),把abc當作乙個整體來匹配,至少出現兩次,匹配出來的是abcabc,abcabcabc,……

所以,在正規表示式中可以用()來進行分組,解決單個與整體的問題。

另外正規表示式中用「|」來表示或者的關係,比如,a|b,表示匹配a或者是b。

下面我們通過具體的案例來體會下上面所講的內容。

案例一:

凡是兩個vba連在一起的保留乙個vba即可,不區分大小寫。

**如下:

sub 去除重複()

dim regx as object

set regx = createobject("vbscript.regexp")

with regx

.global = true

.ignorecase = true '不區分大小寫,false則區分大小寫

.pattern = "(vba)"

[b1] = .replace([a1], "vba")

end with

end sub

本案例中vba就作為乙個整體進行匹配,所以用括號。另外我們還學習到了如何區分大小寫,ignorecase = true '不區分大小寫,false則區分大小寫。

案例二:

把經理或者是總監替換為高管。

**如下:

sub 替換()

dim regx as object, rng as range

set regx = createobject("vbscript.regexp")

with regx

.global = true

.pattern = "總監|經理"

for each rng in [a2:a9]

cells(rng.row, 2) = .replace(rng, "高管")

next

end with

end sub

本例中我們練習的是正規表示式中或的表達。

案例三:

篩選以上海或者北京開始,一辦或者三辦結束的內容。

**如下:

sub 篩選()

dim regx as object, rng as range, mat, n, m

set regx = createobject("vbscript.regexp")

with regx

.global = true

.pattern = "(上海|北京).*(一辦|三辦)"

for each rng in [a2:a28]

set mat = .execute(rng)

for each m in mat

n = n + 1

cells(n + 1, 2) = m

next

next

end with

end sub

.pattern = "(上海|北京).*(一辦|三辦)",(上海|北京)這個很好理解,北京或者上海,中間的點號是元字元,. 匹配除""之外的任何單個字元,星號是量詞,* 匹配前面的子表示式零次或多次,點號和星號結合就表示任意零個或者是單個或者是多個字元,後面的表示一辦或者三辦結束。

通過上面三個例子,我們可以感受到,元字元,量詞,分組結合在一起,可以實現很強大的匹配功能。

**:公尺巨集office

Java匯出excel(無模板匯出excel)

匯出標題 string metadata 匯出資料 list datalist data data 為需要匯出的資料 生成資料列 listdata new arraylist 生成列資料 for mapdatatemp datalist 匯出資料名稱 string filename excel名稱 ...

通過Excel模板進行POI匯出excel資料

需要滿足匯出的excel資料能夠匯入到專案中,目前通過poi對excel模板進行讀取,然後在進行寫入資料,最後實現匯出功能。啥也不說 上 轉殖模板中的workbook 主方法 填充資料 可以 裝入map中 獲取資料 資料1 office office userutils.getcurrentorga...

zk中用jxls匯出excel

在zk中獲得session 輸入excel檔案位址 private static string templatefilename session.getservletcontext getrealpath form form.xls 輸出excel檔案位址 private static string...