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