У меня проблема с использованием regexp в excel macro, вызывая regex.execute (string), вместо того, чтобы получать массив возвращаемых групп захвата, я всегда получаю одиночный возврат, который представляет собой всю строку, указанную в шаблон. Используя тот же шаблон в http://www.regexr.com/, я вижу, что доход хорошо сгруппирован. Что я упускаю из этого:excel VB regexp 5.5 группа захвата
Private Sub ParseFileName(strInput As String)
Dim regEx As New RegExp
Dim strPattern As String
Dim strReplace
'Sample string \\Work_DIR\FTP\Results\RevA\FTP_01_01_06_Results\4F\ACC2X2R33371_SASSSD_run1
strPattern = "FTP_(\w+)_Results\\(\w+)\\([\d,\D]+)_(SAS|SATA)(HDD|SSD)_run(\d)"
With regEx
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
Set strReplace = regEx.Execute(strInput)
ActiveCell.Offset(0, 1) = strReplace.Count
Else
ActiveCell.Offset(0, 1) = "(Not matched)"
End If
End sub
В конце концов, strReplace.Count
всегда показывает 1, что вся строка FTP_01_01_06_Results \ 4F \ ACC2X8R133371_SASSSD_run1
Удивительно, это работает! Большое спасибо! Извините, не могу повышать – SamDaMan