Извлечение символа из имени файла с помощью RegEx в Excel VBA - PullRequest
0 голосов
/ 27 мая 2019

Моими строками являются такие имена файлов:

  • Имя файла 1 (A12 V1.1)

  • Имя файла 1 (V2) Текст (A9)V2.3 8.99)

  • Имя файла V2 Текст (A34 8.3 V4)

Как извлечь только числа, начинающиеся с 'V', содержится только в последних скобках и исключая' V '?

, т. е. - 1.1, 2.3, 4

. Следующая Uge-функция Regex была предоставлена ​​YasserKhalil ( Предыдущий пост здесь)

Однако UDF возвращает имена файлов, такие как:

  • IPV32_20.dll, который возвращает V32-20

  • IMV1.dll, который возвращает V1.

Эти имена файлов не содержат скобок, поэтому они не должны ничего возвращать.

Как изменить этот UDF?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

EDII Судя по комментарию, ОП хочет вернуть только цифры и точки после V, поэтому мы изменим регулярное выражение, чтобы обеспечить это ниже.

Кажется, что следующееверните то, что вы описываете:

Option Explicit
Function vNum(s As String) As String
    Dim re As Object
Set re = CreateObject("vbscript.regexp")
With re
    .Pattern = "\(.*V([\d.]+)(?=.*\))"    
' Regex above changed from original to return only digits and dots that immediately follow the V "\(.*V(\S+)(?=.*\))"
    If .test(s) = True Then
        vNum = .Execute(s)(0).submatches(0)
    End If
End With

End Function

enter image description here

А вот подробное описание регулярного выражения:

Примечаниечто, поскольку в вашем описании указана «строка», а не числа, это то, что это может вернуть.Если вам нужно ограничить его цифрами и десятичными числами, это простое изменение

извлечь строку, начинающуюся с, но исключая 'V', содержащуюся в последних скобках

\(.*V(\S+)(?=.*\))

Опции: чувствительны к регистру;^ $ не совпадают при переносе строк

Создано с помощью RegexBuddy

0 голосов
/ 27 мая 2019

Я предполагаю, что мы могли бы захотеть захватить цифры после V:

(?:.+V)([0-9.]+)(?:.+|$)

Мы добавляем левую и правую границу здесь, используя две не захватывающие группы (?:.+V) и (?:.+|$), а в середине, ([0-9.]+), мы собираем желаемое число.

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...