VBScript正则表达式删除所有字符但数字和连字符(“ - ”)

时间:2010-11-06 18:21:35

标签: vbscript

有人可以帮我编写RegExp来删除除数字和连字符(减号或“ - ”)之外的所有字符。

字符串看起来像: C:\ Documents and Settings \ User \ Desktop \ New Folder 2 \ New \ Folder \ 1586-10 bougsfiugUYG(jygf)hoihd.xls

需要:

1586年至1510年

未指定-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-文档 - 和 - 设置 - 海伦 - 桌面-NEW-文件夹-2-新文件夹 - 2-1588-11-sfiuhsgu-(fgRG75476)-skghgsiu.xls

1 个答案:

答案 0 :(得分: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