有人可以帮我编写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
答案 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