Регулярное выражение VBScript для удаления всех символов, кроме цифр и дефиса ("-") - PullRequest
0 голосов
/ 06 ноября 2010

Может кто-нибудь помочь мне написать RegExp, чтобы удалить все символы, кроме цифр и дефиса (знак минус или "-") между ними.

строка выглядит так: C: \ Documents and Settings \ Пользователь \ Рабочий стол \ Новая папка 2 \ Новая \ папка \ 1586-10 bougsfiugUYG (jygf) hoihd.xls

должно быть:

1586-10

только.

количество цифр до -10 не указано (может быть 4-6); -10 может быть любым двузначным числом ...

чтобы было проще. вот функция, которую я нашел:

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-Документы-и-Настройки-Lena-Desktop-New-Folder-2-New-Folder-2-1588-11-sfiuhsgu- (fgRG75476) -skghgsiu.xls

1 Ответ

0 голосов
/ 06 ноября 2010

\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)

Редактировать2: Фрагмент кода, используемый для вызова вашего кода

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...