Excel VBA regex - идентифицирует текст в формате «имя_имя_идла.имя_стали» или «имя, отчество, фамилия» - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу удалить текст в формате «firstname.middlename.lastname» или «имя, отчество, фамилия». Я использую приведенный ниже код, но он не работает. Можете ли вы помочь с кодом шаблона. (также иногда не будет никакого второго имени, тогда это будет только имя.

`enter code here
`Function isEmail(ByVal data As String)

Dim mailReg As Object
Set mailReg = CreateObject("VBScript.RegExp")

Dim regpattern As String
regpattern = "/[a-z]+./[a-z]"

Dim arr1() As String
Dim element As Variant
Dim strInput As String

arr1() = Split(data, " ")

For Each element In arr1

    strInput = element
    mailReg.IgnoreCase = True
    mailReg.Global = True
    mailReg.Pattern = regpattern

    If mailReg.Test(strInput) = True Then

    isEmail = (strInput)
    End If
Next element
End Function

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

кажется, вы могли бы использовать это

Function isEmail(ByVal data As String) As Boolean
    Dim l As Long
    l = Len(data) - Len(Replace(Replace(data, ",", "."), ".", vbNullString))
    isEmail = l >= 1 And l <= 2
End Function
0 голосов
/ 01 апреля 2020

Это не использует регулярное выражение:

Option Explicit
Function isEmail(ByVal data As String) As Boolean
    Dim u As Long, temp As String, brr
    isEmail = False
    temp = Replace(data, ".", ",")

    If InStr(temp, ",") = 0 Then Exit Function

    brr = Split(temp, ",")
    u = UBound(brr)
    If u = 1 Or u = 2 Then
        isEmail = True
        Exit Function
    End If

End Function

enter image description here

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