Я ищу совет.

Я пытаюсь использовать регулярные выражения в Visual Basic для Excel (ссылка на регулярные выражения Microsfot VBScript 5.5 уже установлена).

Я просто хочу, чтобы эта функция проверяла мое регулярное выражение \d\d\d\d\d (для поиска любых 5 последовательных целых чисел) и, если это правда, давала соответствующее значение.

Например, если у меня есть строка «aaaaa 12345 bbb», я хочу, чтобы функция выдала «12345». Кажется, легко, но ... не для меня.

Это мой код до сих пор:

Function EXTRACT_CP(cell_with_text As Range) As String

Dim regEx As New RegExp
Dim strexpresion As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String

strexpresion = "\d\d\d\d\d"
strInput = UCase(cel_with_text.Value)

  regEx.Pattern = strexpresion

  If regEx.Test(strInput) Then

‘THIS LINE OBVIOUSLY FAILS BUT I DON’T KNOW WHAT TO PUT
        strOutput = regEx.Replace(strInput, "\d\d\d\d\d")

  End If

EXTRACT_CP = strOutput

End Function

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

1 ответ1

1

Пять последовательных цифр?

Добавить переменные:

Dim colMatches As Object
Dim ix As Long
Dim separator As String

Действительный RegEx:

regEx.Pattern = "(\d{5})"

Изменить:

strOutput = regEx.Replace(strInput, "\d\d\d\d\d")

чтобы:

Set colMatches = regEx.Execute(strInput)

и итерируйте свое единственное совпадение (\d{5}) ~ colMatches.Item(0) для субматчей:

separator = "|"
strOutput = ""
For ix = 0 to colMatches.Item(0).submatches.count - 1
  strOutput = strOutput + colMatches.Item(0).submatches.Item(ix) + separator

Код написан без редактора VBA, поэтому могут потребоваться корректировки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .