2010-11-06 83 views
0

有人可以幫助我寫RegExp刪除除數字和連字符(減號或「 - 」)之間的所有字符。VBScript正則表達式刪除所有字符,但數字和連字符(「 - 」)

字符串看起來像: C:\ Documents和Settings \用戶\桌面\新建文件夾2 \新建\文件夾\ 1586年至1510年bougsfiugUYG(jygf)hoihd.xls

它需要:

1586-10

只。

-10未指定前的位數(可以是4-6); -10 itslef可以是任意兩位數字...

使其更容易。這裏是我發現的功能:

Public Function strClean (strtoclean) 
Dim objRegExp, outputStr 
Set objRegExp = New Regexp 

objRegExp.IgnoreCase = True 
objRegExp.Global = True 
objRegExp.Pattern = "((?![a-zA-Z0-9]).)+" 
outputStr = objRegExp.Replace(strtoclean, "-") 

objRegExp.Pattern = "\-+" 
outputStr = objRegExp.Replace(outputStr, "-") 

strClean = outputStr 
End Function 

模式目前使這一帶的文件名: C-文件和 - 設置 - 莉娜 - 桌面 - 新建 - 文件夾 - 2 - 新文件夾,2-1588- 11-sfiuhsgu-(fgRG75476)-skghgsiu.xls

回答

0

\d?\d?\d\d\d\d-\d\d

\d是一個數字

?表示零或前述字符之一

所以\d?表示它可以是0或1位數字。

編輯:新增如何評論

Dim myRegExp 
Set myRegExp = New RegExp 
myRegExp.Pattern = "\d?\d?\d\d\d\d-\d\d" 
Dim test 
test = "C:\Documents and Settings\User\Desktop\New Folder 2\New\Folder\1586-10 bougsfiugUYG(jygf) hoihd.xls" 
Set myMatches = myRegExp.Execute(Right(test, InStrRev(test, "\"))) 

WScript.Echo myMatches(0) 

EDIT2後使用的例子:代碼片段用來調用你的代碼

Dim test 
test = "C:\Documents and Settings\User\Desktop\New Folder 2\New\Folder\1586-10 bougsfiugUYG(jygf) hoihd.xls" 
test = StrClean(test) 

WScript.Echo test 
+0

喜HO1, 對不起,我沒能成功足夠清楚: 路徑C:\ Documents and Settings \ User \ Desktop \ New Folder 2 \ New \ Folder \ - 可以是任何東西和任何長度 - 所以包括\最後\之前的所有字符都應該被剝離,無論它們是否具有其中的號碼是不是...... – Elen 2010-11-06 18:41:03

+0

除了正則表達式的邏輯應該是匹配除1586-10之外的所有內容 - 所以我可以使用它作爲一種模式來移除1586-10以外的所有內容... – Elen 2010-11-06 18:42:56

+0

@user:我不認爲我會嘗試使用這是一個正則表達式,我只是使用'Right'和'InStrRev'作爲我上面修改的答案。但我沒有使用正則表達式,所以可能會有一些純粹的解決方案只使用正則表達式。 – 2010-11-06 19:01:54

相關問題