本文參考:
裡常用的幾個正規表示式)
正規表示式提取值)ab
1商品名稱(比較典型的原始資料)
型號(輸出結果) 2
美的(midea) 電飯煲 智慧型ih加熱 家用電飯鍋 4l mb-fs4006
mb-fs4006
3美的(midea) 多用途鍋 4.5l 家用電火鍋鴛鴦鍋 1500w mc-wlhn32a
mc-wlhn32a
4美的(midea) 電水壺he1504a 家用便捷式燒水壺四段溫304不鏽鋼電熱水壺
he1504a
5美的(midea)電熱水瓶pf708c-50t雙出水5段溫控 家用5公升電熱水壺304不鏽鋼電水壺
pf708c-50t
6美的(midea)電壓力鍋 ih電磁加熱可中途加菜鋼膽5l高壓鍋 my-ht5077p
my-ht5077p
7美的(midea) 破壁機 真空輔食機 智慧型家用多功能果汁機 榨汁機 mj-bl1507a
mj-bl1507a
8美的(midea) 電磁爐 恆勻火 十檔火力調節 一鍵桑拿蒸c21-qh2130(贈不鏽鋼蒸鍋)
c21-qh2130
9美的(midea)電燉鍋 煲湯鍋 電砂鍋 隔水燉 火山陶釜三膽 4l電燉盅 tgs40w
tgs40w
10美的(midea)電熱水壺即熱式不鏽鋼電水壺 6段溫控燒水壺 3l/3公升台式飲水機mk-he3001
mk-he3001
11美的(midea)電磁爐 纖薄勻火滑動觸控 家用火鍋爐 c21-rh2153火力時間雙顯示
c21-rh2153
12美的(midea) 電磁爐hst2105 紅外火力 不挑鍋具 紅外爐雙環控火電陶爐
hst2105
13美的(midea)電飯煲 2l智慧型ih加熱 家用迷你智慧型預約觸控操控 小電飯鍋mb-fz2001
mb-fz2001
14美的(midea)電壓力鍋 球形內膽可作電飯煲 5l壓力鍋 家用雙膽高壓鍋yl50easy301
yl50easy301
15美的(midea)電餅鐺mc-jk30easy301家用煎烤機雙面加熱煎餅鐺早餐機自動斷電煎餅機
mc-jk30easy301
16美的(midea) 空氣炸鍋 家用全自動 高光耐熱pp材料白色 mf-wzn3201空氣無油炸鍋
mf-wzn3201
17美的(midea) 多用途鍋 多功能家用電火鍋 蒸鍋 6l mc-lhn30c
mc-lhn30c
18美的(midea) 電飯煲 3l家用智慧型預約 不鏽鋼拉絲機身電飯鍋 mb-fs3073
mb-fs3073
19美的(midea)電熱水瓶 熱水壺電水壺304不鏽鋼 電熱水壺熱水瓶mk-sp50colour201
mk-sp50colour201
20美的(midea)多用途鍋zg26easy401 食品級不鏽鋼 三層大容量電蒸鍋 電蒸籠
zg26easy401
function getstr(rng as range)
with createobject("vbscript.regexp")
.global = true
.pattern = "\d+\*\d+\+\d" '表示式
if .execute(rng).count = 0 then
getstr = ""
else
getstr = .execute(rng)(0)
end if
end with
end function
(**的用法就不敷述了)
function getstr(rng as range, str as string)
'第乙個引數rng為區域保持不變, 新增第二個引數str(作為正規表示式)
with createobject("vbscript.regexp")
.global = true
.pattern = str '表示式,直接從使用者函式的第二個引數中呼叫
if .execute(rng).count = 0 then
getstr = ""
else
getstr = .execute(rng)(0)
end if
end with
end function
下面介紹一下我所用的正規表示式以及思路:
=getstr(a1,"((?!midea)(?![0-9])[\w][-][\w])|(?!midea)(?![0-9])[0-9a-z][-][0-9a-z](\w)")
第二個引數的的內容為從『 | 』這個符號分成兩部分理解:
((?!midea)(?![0-9])[\w][-][\w])
其中:(?!midea) 表示不包含字元「midea」 因為每一行裡面都有這個
(?![0-9])表示不包含以3個及以上的數字組合的開頭(故將其放置在前面),目的是為了排除第三行中的1500w
[\w]數字及大小寫字母1,19個長度的組合
[-] 緊接著後面一定會有乙個「-」減號
[\w]最後數字及大小寫字母1,19個長度的組合,之所以是19這個數只是為了能夠包含住所有應該匹配到的型號
這樣的結果就是所有帶有「-」減號的型號
(?!midea)(?![0-9])[0-9a-z][-][0-9a-z](\w)"
這是「|」符號後面的部分,「|」表示「或」的意思,即前面的沒有匹配到就用後面的匹配
前面的一樣的就不重複介紹了,從不一樣的開始介紹:
[0-9a-z]開頭為數字或大寫字母,且長度為0到19位字元的(因為是從0開始的,所以可以有也可以沒有)
[-]表示後面緊接零個或者1個「-」減號
[0-9a-z]前面兩個有可能都沒有,也就是說這裡有可能是開頭的字元,必須為大寫字母或數字
(\w)最後的字元可以是大小寫字母或數字,長度為3到10個字元
使用正規表示式
如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 和 字元來幫助查詢您正尋找的檔案。字元匹配檔名中的單個字元,而 則匹配乙個或多個字元。乙個如 data?dat 的模式可以找到下述檔案 data1.d...
使用正規表示式
本文節選自 並有稍微修正。使用正規表示式 您可以使用正規表示式做很多事情。在以下的列表中,您可以找到一些最普通 最常用的正規表示式的例子。表示文字串必須在一行的開頭。所以,當查詢行的開頭只為 hosts 的行,可以使用命令 grep ls hosts 代表了一行的結尾。所以,當查詢行的結尾只為 ho...
正規表示式使用
1 靜態match方法 使用靜態match方法,可以得到源中第乙個匹配模式的連續子串。2 靜態的matches方法 這個方法的過載形式同靜態的match方法,返回乙個matchcollection,表示輸入中,匹配模式的匹配的集合。3 靜態的ismatch方法 此方法返回乙個bool,過載形式同靜態...