Biểu thức chính quy - Excel - Nhận giá trị khớp


0

Tôi đang tìm kiếm một số lời khuyên.

Tôi đang cố gắng sử dụng các expresions thường xuyên trong Visual Basic cho Excel (tham khảo đến Expresions 5.5 của microsfot đã được thiết lập).

Tôi chỉ muốn hàm này kiểm tra regex của mình \d\d\d\d\d(để tìm bất kỳ 5 số nguyên liên tiếp nào) và nếu nó đúng, sẽ đưa ra giá trị khớp.

Chẳng hạn, nếu tôi có chuỗi thì aaaaa 12345 bbb, tôi muốn hàm cung cấp cho 123 12345. Có vẻ dễ nhưng nhưng không phải với tôi.

Đây là mã của tôi cho đến nay:

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

Chỉ muốn biết làm thế nào để có được giá trị phù hợp cho bất kỳ regex nào.


Câu trả lời:


1

Năm chữ số liên tiếp?

Thêm biến:

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

Một RegEx hợp lệ:

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

Thay đổi:

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

đến:

Set colMatches = regEx.Execute(strInput)

và lặp lại trận đấu duy nhất của bạn (\d{5})~ colMatches.Item(0)cho các đơn hàng:

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

Mã được viết mà không có trình soạn thảo VBA để có thể cần điều chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.